我有一个活动,其中有许多EditText
个控件和复选框。默认情况下,大多数EditTexts
被禁用。
当我打开活动时,一些随机EditText
控件会获得焦点(围绕它的框架),如果点击它,即使EditText
被禁用,也会出现屏幕键盘按屏幕键时会出现文本。
此外,我的整个布局都包含在ScrollView
中。滚动时,一些随机EditText
会获得焦点。它可以是最低的可见光,也可以是最高的可见光,有时也可以是中间的一个,有时一个在可见区域之外。
因为布局的随机元素会获得焦点,所以当您打开它时,Activity会随机向下滚动,这非常烦人。
我猜这是Android的错误,但是有解决方法吗?
Stop EditText from gaining focus at Activity startup仅处理1 EditText
的情况,您可以告诉它失去焦点,以便虚拟元素可以获得它。在我的情况下,虚拟元素在onResume或onCreate中都没有获得焦点,android:focusable="true" android:focusableInTouchMode="true"
我应该检查所有EditText控件(其中有12个)并告诉他们失去焦点吗?什么滚动,因为它似乎焦点随机跳跃。
答案 0 :(得分:4)
由于fling
中ScrollView
方法的实施 -
覆盖findFocus()
就足以让它返回this
滚动时防止焦点跳转。
@Override
public View findFocus() {
return this;
}
答案 1 :(得分:3)
不会滚动随机聚焦EditText。当scrollview处理一个fling事件时。如果你覆盖了fling方法,则不会有任何随机焦点变化。
然后,如果你想要恢复功能,你需要编写自己的fling方法。您可以在此处复制代码: