android - 滚动时焦点随机跳跃

标签 android android-activity focus android-edittext

我有一个 Activity ,附近有许多 EditText 控件和复选框。默认情况下,大多数 EditTexts 都是禁用的。

当我打开 Activity 时,一些随机的 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 个)并告诉它们失去焦点?滚动会怎样,因为焦点似乎随机跳跃。

最佳答案

由于 ScrollView 中的 fling 方法的实现 - 覆盖 findFocus() 就足够了,这样它将返回 this 以防止焦点在滚动时跳来跳去。

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

关于android - 滚动时焦点随机跳跃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6679294/

相关文章:

android - 从对话框 Activity 更改操作栏背景

java - 我的 JPanel 拒绝聚焦

android - 我可以提供付费应用的优惠券代码以在 Google Play 商店免费提供吗?

android - 无法使用 "startActivityForResult"启动第二个 Activity

java - 如何过滤来自 Firebase 的查询?

java - 清理我的项目后,R.java 文件消失了

CSS anchor 颜色变化在悬停和焦点时不变

javascript - mousedown后触发输入

java - 如何将scrollTo()与Spinner一起使用?

android - 用于检查 android 中的内存泄漏的工具