我有一个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>
我在这里做错了什么?只是想不出来。非常感谢!
答案 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"