android - 停止 ScrollView 将焦点设置在 EditText

标签 android focus android-edittext scrollview

Android 的 ScrollView(当滚动或甩动时)喜欢在 EditText 是其中一个子项时设置它的焦点。当您滚动然后释放时会发生这种情况。有没有办法阻止这种行为?我已经尝试了几乎所有我能想到的以及我在 StackOverflow 上读到的所有内容。没有什么对我有用。下面是一个示例布局,如果您想对其进行测试。我迫切地想要阻止这种愚蠢的行为。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<ScrollView 
    android:id="@+id/scrollView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<LinearLayout 
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginRight="50dp"
    android:focusable="true"
    android:focusableInTouchMode="true"
    >

    <EditText 
        android:layout_width="fill_parent" 
        android:layout_height="100dp" 
        android:text="TestApp 1"
        />


    <Button 
        android:id="@+id/btn"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="TestApp 1"
        />

    <Button 
        android:id="@+id/btn"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="TestApp 1"
        />

    <Button 
        android:id="@+id/btn"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="TestApp 1"
        />

    <EditText 
        android:layout_width="fill_parent" 
        android:layout_height="100dp" 
        android:text="Bleh...."
        />

    <Button 
        android:id="@+id/btn"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="TestApp 1"
        />
    <EditText 
        android:layout_width="fill_parent" 
        android:layout_height="100dp" 
        android:text="TestApp 1"
        />


    <Button 
        android:id="@+id/btn"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="TestApp 1"
        />

    <Button 
        android:id="@+id/btn"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="MeeEEEEEEEEEEEEE"
        />

    <Button 
        android:id="@+id/btn"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="TestApp 1"
        />



</LinearLayout>
</ScrollView>

</LinearLayout>

最佳答案

这行得通。不确定这是否是最好的解决方案。

// SCROLL VIEW HACK
    // BOGUS
    ScrollView view = (ScrollView)findViewById(R.id.scrollView);
    view.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
    view.setFocusable(true);
    view.setFocusableInTouchMode(true);
    view.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            v.requestFocusFromTouch();
            return false;
        }
    });

关于android - 停止 ScrollView 将焦点设置在 EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100831/

相关文章:

android - 是否可以引用原生 Android 平台字符串?

java - 当鼠标监听器处于 Activity 状态时键盘失去焦点

focus - 如何确保将 wxFrame 置于前台?

android - 将信息保存到数据库后清除 editText 输入

android - 如何在 EditText 中用逗号分隔数字

android - 无法从android项目模拟器调用web服务方法

java - 从 Android 版 Firebase 读取多个 key 时出现问题

android - 在印度创建开发者帐户的问题

javascript - 输入字段 - 蓝色焦点突出显示?无法摆脱?

Android:为什么当我膨胀资源布局文件时我的用户界面没有被绘制?