你能在XML布局中设置“标签顺序”吗?

我有一些平板电脑用户,他们的软键盘上有一个tab键。 我正在使用一个表视图,并有3个EditText字段与当前行下面的EditText字段在一行。

当用户点击标签时,它会将它们带到下一个字段,而不是右侧的下一个字段。

有没有在布局设置选项卡顺序的方法或只是以编程方式完成?

如果只能用Java来完成,那究竟是如何完成的呢?

感谢在NextFocusRight上的提示,但它似乎没有工作(或者我做错了什么)

这是我使用的代码。 我必须添加imeoptions才能在我的模拟器中显示“next”button。 你看到我这样做有什么不对吗?

<EditText android:id="@+id/bikeHHT" android:layout_width="50dip" android:layout_height="40dip" android:textSize="14px" android:maxLength="2" android:nextFocusLeft="@+id/bikeMMT" android:imeOptions="actionNext" android:layout_column="1"/> <EditText android:id="@+id/bikeMMT" android:layout_width="50dip" android:layout_height="40dip" android:textSize="14px" android:nextFocusRight="@+id/bikeSST" android:imeOptions="actionNext" android:maxLength="2"/> 

android:nextFocusLeftreplaceandroid:nextFocusLeft android:nextFocusDown 。 “下一个”软键或TAB键正在寻找下一个“向下”的焦点,而不是向左或向右。

我也注意到在你的参考中:

 android:nextFocusRight="@+id/bikeSST" 

如果您尚未定义该标识,则可能需要“+​​”字符,如果在.xml文件中引用的元素可能较低。

否则,如果它已经定义在上面(或包含),那么你可以省略“+”字符:

 android:nextFocusRight="@id/bikeSST" 

在引用应该已经存在的ID时不使用“+”的一个优点是IDE和Lint检查可以检测到一个错误情况:您指的是一个实际上不存在的ID。

如果包含“+”,那么如果不存在则创build它,并且不能执行此检查。

你检查了EditText的android:imeOptions="actionNext"属性吗?

它用虚拟键盘中的“下一步”replace回车键的名称并点击它 – 焦点跳转到下一个字段。

在你的布局中,你会做这样的事情

 <EditText ... android:text="Field 1" android:imeOptions="actionNext" /> <EditText ... android:text="Field 2" android:imeOptions="actionNext" /> 

在Java中

 TextView field2 = (TextView) field1.focusSearch(View.FOCUS_RIGHT); field2.requestFocus(); 

接下来由您来决定哪个字段将要求重点。

对我来说, android:nextFocusUpandroid:nextFocusRightandroid:nextFocusDownandroid:nextFocusLeft都不起作用,但android:nextFocusForward确实起作用。

请参阅支持键盘导航,处理选项卡导航 。

有一个更好的办法。 有一个XML参数,您可以将其放入布局中,以便在用户完成操作时自动移动光标通过每个EditText 。 这允许更简单的forms实现。

问题是,该死的生活还记得这到底是什么…

一定要看看android:nextFocus * xml属性。 正常forms的行动是要下去。 但也许右边有一个button,您可以接受下一个焦点(例如按Enter或类似)。

http://developer.android.com/reference/android/view/View.html#attr_android:nextFocusDown

还有一些可用的程序选项:

http://developer.android.com/reference/android/view/View.html#setNextFocusDownId(int

您可能正在寻找属性android:nextFocusRight,android:nextFocusLeft,android:nextFocusUp和android:nextFocusDown。 如果选项卡button的默认行为是将焦点向下移动到第二行,那么我认为你可以将android:nextFocusDown设置为下一个要获得焦点的视图的ID。 然后,当用户按下Tab键时,将焦点移动到您指定的任何视图上,即使在这种情况下,它恰好在当前视图的右侧,而不是在其下方。

android:nextFocusLeftreplace为android:nextFocusForward