- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我实现了 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
并且在编辑文本中输入时没有显示任何文本。此外,在这开始充斥 logcat 之后,除了软键盘外,UI 会被卡住。
在 internetz 上找不到任何关于此的信息。并且 requestLayout()
必须在 Edittext/Textview 类中调用,因为我从不调用它。你们中有人知道如何解决这个问题或导致错误的原因吗?
EDIT1 好的,如果我注释掉该行,问题就会消失:
setCompoundDrawables(getCompoundDrawables()[0], getCompoundDrawables()[1], x, getCompoundDrawables()[3]);
我尝试将其作为可运行项发布到 View 的 UI 队列,但没有显示任何文本。
EDIT2 我看过this video一位 Android 开发人员解释说在 onLayout
期间发生了一些递归的事情,但再一次,我只是子类化 EditText
。
EDIT3 我还尝试丢弃复合可绘制对象并在 EditText
之上使用另一个 ImageView
但它与布局有关在 Edittext
上绘制某些东西时通过我相信......递归调用仍在发生并且它阻止了 UI。不知道接下来要尝试什么...4.3 sux
EDIT4 我最终使用水平方向的线性布局和组件背景的自定义 9 补丁可绘制对象。在布局中,我有一个带有自定义 9patch Bg 的普通 edittext,然后是一个带有另一个自定义 9patch Bg 的 ImageButton。
像这样:
红线将 Edittext 与 ImageButton 分隔开。它现在适用于 4.3
最佳答案
回复有点晚,但我刚刚遇到了与 ClearableEditText 组件相关的问题。
看来,由于 setClearIconVisible() 中 compounddrawables 的变化,触发了一个永恒的 onfocus 事件循环。
我将 setClearIconVisible 更改为仅在有任何实际更改时更改可绘制对象。
protected void setClearIconVisible(boolean visible) {
boolean wasVisible = getCompoundDrawables()[2] != null;
if(wasVisible == visible) return;
setCompoundDrawables(oldDrawables[0], oldDrawables[1], x, oldDrawables[3]);
setCompoundDrawablePadding(oldPadding);
}
这解决了我的键盘没有重新出现的问题。焦点事件的永恒循环对任何人都没有好处。它仍然添加了另一轮布局和 focusedChanged,因此可能有更聪明的解决方案。不过,我可以多打一轮。
我还向开发人员发送了拉取请求,https://github.com/yanchenko/droidparts/pull/31 .
关于android - ClearableEditText - requestLayout() 在 Android 4.3 上调用不当,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18383006/
我在 GLSurfaceView.Renderer 上有一个 OpenGL 游戏循环(更新+绘制),它在一个单独的线程上运行,而不是创建 GLSurfaceView 子类(包含渲染器)的线程。 有时,
我阅读 android 文档找到方法 forceLayout()(在下一个布局请求时生成布局显示)和 requestLayout()(应该立即发布布局请求),但我无法获得他们按照宣传的方式行事。特别是
我的控制台中收到垃圾邮件警告。我能找到的唯一信息是大多数人在 ListView 中启用快速滚动时得到它。我没有使用任何 ListView 。它说它被 CollapsingToolbarLayout、A
当我尝试在 ListView 中扩展布局时出现以下错误: requestLayout() improperly called by android.widget.TextView{...} durin
我有一个像这样的自定义viewGroup public class CustomLinearLayout extends LinearLayout { public CustomLinearLayou
已经有 some solution here关于如何以编程方式更改按钮尺寸 但是,对我有用的是:Here in this site 作者在其中做了这样的事情: ImageButton someView
我有一个包含图像的折叠工具栏布局,在折叠时显示工具栏标题。我需要更改工具栏标题字体,所以我在工具栏布局中添加了一个 TextView 。现在,每当我折叠工具栏时,都会重复生成以下错误。 08-12 1
我有一个 ListView,它包含由 RelativeLayout 组成的项目: 项目:
根据官方documentation ,如果您需要在不使用繁重的 setText() 例程的情况下更新之前在 TextView 中添加的跨度,您可以保留对需要更新的跨度的引用: Change inter
我有一个非常复杂的 android 应用程序。已经尽可能扁平化 View 层次结构,但我的应用程序仍然存在滞后。例如,有一个菜单,其中的条目可以通过 ValueAnimator 设置高度来折叠/展开。
谁能告诉我如何修复以下跟踪: W/View (16810): requestLayout() improperly called by theme.effects.TopCenterImageV
为了移动 View ,我调用了 setX、setY 和其他一些设置宽度和高度的函数,并在每个函数的末尾调用 invalidate 或 requestLayout。因此,每个用户事件都会多次调用 inv
我正在尝试编写视频播放器代码,它可以很好地播放视频,但我无法调整 SurfaceView 的大小。准备好 MediaPlayer 后,我设置了所需的大小并调用了 requestLayout 或 for
我有一个在水平滚动窗口中按列显示文本和图像的 View 。它重排,因此(至少可能)随着内容的变化而调整自己的大小;当软键盘来来去去以及 View 高度发生变化时,它也会重新排列和调整大小(保持大致恒定
我对 forceLayout() 的角色有点困惑, requestLayout()和 invalidate() View 的方法类。 什么时候叫他们? 最佳答案 为了更好地理解 François BO
我的应用程序必须使用 GridLayout。 GridLayout 的问题是权重的限制,因此我必须在运行时缩放其子项的大小。我在 OnGlobalLayoutListener 的帮助下完成了这项工作。
我在显示 listview 时实现了 listview customadapter,它在下面显示 warring how to reslove it。 requestLayout() improper
我有一个包含两个文本输入字段的布局,它们会随着选项的变化而消失和重新出现。 但是,当我使用属性 app:endIconMode="clear_text" 时,对于两个文本字段,这两个警告会无休止地淹没
我们正在使用 4 版本的 Android 应用程序,我们需要 mysql 连接。我们使用返回数据库结果的 php 文件来执行此操作。以下代码有效,因为如果我们调试项目,我们可以在 System.out
目前我有一个代码,其中有一个 recyclerview 和一个cardview。 recyclerview 适配器将显示卡片列表,对于个别卡片,数据会有所不同。问题就来了。运行应用程序后,我将收到 a
我是一名优秀的程序员,十分优秀!