Flutter调用原生View心酸路

Flutter调用原生View心酸路,第1张

场景:Flutter调用原生第三方密码输入控件 坑一:flutter接入原生View项目中一运行就闪退,Demo中运行完好

代码结构 存放位置 Plugin创建方式 jar、so引用方式 包名等全都改了个遍 都无效
最终原因 混淆导致找不到so包 创建第三方控件失败

- 坑二:控件hint字体显示和flutter中hint字体显示不一致

找了好久 终于找到差不多 字体设置hint字体

val myFont: Typeface = Typeface.createFromAsset(activity.assets, "fonts/pfthin0.ttf")
mSipView.setTypeface(myFont,Typeface.BOLD)
坑三:hint字体大小以及颜色设置问题
val hintSS = SpannableString(params!!["hintStr"].toString()) //定义hint的值
val ass = AbsoluteSizeSpan(14, true) //设置字体大小 true表示单位是sp
hintSS.setSpan(ass, 0, hintSS.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
mSipView.hint = SpannedString(hintSS)
mSipView.setHintTextColor(activity.resources.getColor(R.color.hintColor))
坑四:字体下划线与光标显示问题

为了保持与Flutter一致,需要设置光标显示,下划线不显示
最终解决方案:

1. edittext背景设置为页面背景
mSipView.setBackgroundResource(android.R.color.transparent)
2. 光标由全局主题设置
<item name="colorAccent">@color/hintSelectionColor</item>
坑五:创建的Edittext边框还是下划线问题

Demo中创建的控件的全是带边框的,我这边创建的也都是带边框的,所以认为第三方那提供的智能时代边框的 不能下划线形式 ,咨询第三方人员,未得到明确答复。
所以又尝试原生自己的EditText创建 也是边框的 继续调查 先使用原生调用页面 页面中写原生EditText和SipEditText 可以是下划线 有了一丝曙光
感觉是主题设置原因导致
于是MainAcitivty切换主题 无效
继续尝试 最终发现
Android Mainfest文件中,这一块也是设置主题的

<meta-data
    android:name="io.flutter.embedding.android.NormalTheme"
    android:resource="@style/EditTextTheme" />

改完运行出现app无法解析,其实此时的代码已经是ok的了 但是出现无法解析 就又改回来 ,然后又试了很久 也重启电脑 AS 最终兜兜转转又改成上面的主题 也能运行 结果可以了

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/992660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存