我实现了ClearableEdittext并且它工作得很好,除了在 4.3 上 logcat 淹没了我:
W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F....ID 0,0-708,88 #7f050127 app:id/SearchEdittext} during layout: running second layout pass
W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F....ID 0,0-708,88 #7f050127 app:id/SearchEdittext} during layout: running second layout pass
W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F...... 0,0-708,88 #7f050127 app:id/SearchEdittext} during second layout pass: posting in next frame
并且在输入edittext时没有显示任何文本。同样在这开始淹没 logcat 之后,除了软键盘之外,UI 都被冻结了。
在 internetz 上找不到任何关于此的信息。并且requestLayout()
必须在 Edittext/Textview 类中调用,因为我从不调用它。你们中有人知道如何解决此问题或导致该错误的原因吗?
EDIT1好的,所以如果我注释掉该行,问题就会消失:
setCompoundDrawables(getCompoundDrawables()[0], getCompoundDrawables()[1], x, getCompoundDrawables()[3]);
我尝试将此作为可运行文件发布到视图的 UI 队列,但没有显示任何文本。
EDIT2我看过一个 Android 开发人员的视频onLayout
,解释说在EditText
.
EDIT3我还尝试丢弃复合可绘制对象并ImageView
在顶部使用另一个,EditText
但在我相信在顶部绘制某些东西时它与布局传递有关Edittext
......递归调用仍在发生并且它阻塞了 UI。不知道接下来要尝试什么... 4.3 sux
EDIT4我最终使用了具有水平方向的线性布局和自定义 9 个补丁可绘制组件的背景。在布局中,我有一个带有自定义 9patch Bg 的普通编辑文本,然后是带有另一个自定义 9patch Bg 的 ImageButton。
像这样的东西:
红线将 Edittext 与 ImageButton 隔开。它现在适用于 4.3