滚动时焦点随机跳转

时间:2011-07-13 13:00:32

标签: android android-activity focus android-edittext

我有一个活动,其中有许多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个)并告诉他们失去焦点吗?什么滚动,因为它似乎焦点随机跳跃。

2 个答案:

答案 0 :(得分:4)

由于flingScrollView方法的实施 - 覆盖findFocus()就足以让它返回this 滚动时防止焦点跳转。

@Override
public View findFocus() {
    return this;
}

答案 1 :(得分:3)

不会滚动随机聚焦EditText。当scrollview处理一个fling事件时。如果你覆盖了fling方法,则不会有任何随机焦点变化。

然后,如果你想要恢复功能,你需要编写自己的fling方法。您可以在此处复制代码:

Smooth scrolling in Android