android:nextFocusForward在布局中被忽略

时间:2013-02-13 09:01:24

标签: android android-layout

我有一个android xml布局,当用户按下键盘上的下一个时,我想指定字段的焦点顺序。

文档说, android:nextFocusForward = TARGET_ID 应该这样做。但我们所有的测试设备都忽略了它。一些运行2.3的旧设备和运行4.1的新Nexus设备。

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <EditText
            android:textCursorDrawable="@null"
            android:id="@+id/firstname"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="6dp"
            android:layout_marginTop="6dp"
            android:layout_weight="1"
            android:singleLine="true"
            android:background="#00000000"
            android:textColor="#000"
            android:nextFocusForward="@+id/lastname"
            android:padding="2dp"/>

        <EditText
            android:textCursorDrawable="@null"
            android:id="@+id/lastname"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="6dp"
            android:layout_marginTop="6dp"
            android:layout_weight="1"
            android:background="#00000000"
            android:singleLine="true"
            android:textColor="#000"
            android:padding="2dp"/>
    </LinearLayout>

我在这里做错了什么?只是想不出来。非常感谢!

4 个答案:

答案 0 :(得分:10)

尝试nextFocusDown。我不完全理解规则,但似乎行为取决于EditTexts的布局,以及光标位置相对于下一个字段的位置。

答案 1 :(得分:0)

我尝试设置nextFocusDown,nextFocusForward,nextFocusRight,但没有一个工作。我通过监听编辑器操作并以编程方式将焦点设置到下一个EditText来实现它。

    mFirstName.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            mLastName.requestFocus();
            return true;
        }
    });

答案 2 :(得分:0)

我在JetPack的工具栏/操作栏中遇到了类似的问题。我似乎工具栏小部件完全忽略了nextFocus属性。我不使用那些旧式小部件,而是使用基于标准小部件的自定义工具栏解决了该问题。

答案 3 :(得分:0)

已经很长时间了,但我刚刚遇到了问题并找到了解决方案。当 AutoCompleteTextView 被 imeOptions 覆盖时,nextFocusForward 起作用。 我的 EditText 字段中有此代码并且它有效:

android:imeOptions="actionNext"
android:nextFocusForward="@+id/et_xyz"