你能在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:nextFocusLeft
replaceandroid: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:nextFocusUp
, android:nextFocusRight
, android:nextFocusDown
和android: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:nextFocusLeft
replace为android:nextFocusForward
。