场景: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())
val ass = AbsoluteSizeSpan(14, true)
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(R.color.bg)
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 最终兜兜转转又改成上面的主题 也能运行 结果可以了
|