【发布时间】:2011-07-13 13:00:32
【问题描述】:
我有一个活动,其中有许多 EditText 控件和复选框。默认情况下,大多数EditTexts 被禁用。
当我打开 Activity 时,一些随机的 EditText 控件获得焦点(围绕它的一个框架),如果您点击它,即使 EditText 被禁用,屏幕上的键盘也会出现,并且当您按屏幕上的键。
另外,我的整个布局都包含在 ScrollView 中。当您滚动时,一些随机的EditTexts 会获得焦点。它可以是最低可见的,也可以是最高可见的,或者有时在中间,有时在可见区域之外。
由于布局的随机元素获得焦点,因此当您打开 Activity 时,它会随机向下滚动,这很烦人。
我猜这是 Android 的错误,但有解决方法吗?
Stop EditText from gaining focus at Activity startup 仅使用 1 个 EditText 处理这种情况,您可以告诉它失去焦点,以便虚拟元素可以获得它。在我的情况下,虚拟元素在 onResume 或 onCreate 中都没有获得焦点,android:focusable="true" android:focusableInTouchMode="true"
我应该检查所有的 EditText 控件(其中有 12 个)并告诉它们失去焦点吗?滚动怎么办,因为它似乎焦点随机跳跃。
【问题讨论】:
-
刚刚尝试在布局中的每个 EditText 元素上调用 clearFocus() 和 setSelected(false)。这没有帮助。仍然有一些随机的获得焦点。
-
在对此进行一些测试后发现它并不总是随机获得焦点,而是与触摸点具有相同 y 位置的 EditText 元素。您不必完全触摸元素本身,而是触摸它的右侧或左侧,然后开始滚动。一段时间后,EditText 很有可能获得焦点,即使它被禁用(不可编辑)
标签: android android-activity focus android-edittext