我的平板电脑用户的软键盘上有一个标签键。我正在使用表视图,并在一行中有3个EditText字段,当前行下面有EditText字段。
当用户点击标签时,它会将它们带到下面的下一个字段,而不是右边的下一个字段。
布局中是否有一种方法可以设置Tab键顺序,还是仅以编程方式完成?
如果它只能用Java完成,那究竟是怎么做的?
感谢NextFocusRight提示,但它似乎没有用(或者我做错了)
这是我使用的代码。我必须添加imeoptions以使“下一个”按钮显示在我的模拟器中。你觉得我这样做有什么不对吗?
<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"/>
答案 0 :(得分:91)
将android:nextFocusLeft
替换为android:nextFocusDown
。 “下一个”软键或TAB键正在寻找下一个“向下”焦点,而不是向左或向右。
答案 1 :(得分:38)
我还注意到你的参考:
android:nextFocusRight="@+id/bikeSST"
如果尚未定义该id,则需要“+”字符,如果您引用的元素可能在.xml文件中较低。
否则,如果它已经在上面定义(或包含),那么你可以省略“+”字符:
android:nextFocusRight="@id/bikeSST"
当您引用应该已存在的ID时不使用“+”的一个优点是IDE和Lint检查可以检测到错误情况:您指的是实际上的ID不存在。
如果包含“+”,那么如果不存在则创建它,并且无法执行此检查。
答案 2 :(得分:10)
您是否检查了EditText的android:imeOptions="actionNext"
属性?
它用虚拟键盘中的“下一步”替换回车键的名称,然后点击它 - 焦点跳转到下一个字段。
在你的布局中,你会做这样的事情
<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();
由您决定下一个请求关注的字段。
答案 3 :(得分:9)
对我来说android:nextFocusUp
,android:nextFocusRight
,android:nextFocusDown
和android:nextFocusLeft
无效,但android:nextFocusForward
确实有效。
答案 4 :(得分:4)
有一种更好的方法。您可以在布局中放置一个XML参数,以便在用户完成时自动将光标移动到每个EditText
。这样可以更轻松地实现表单。
问题是,该死的生活还记得它到底是什么......
请务必查看android:nextFocus * xml属性。正常形式的行动是下降。但也许右边有一个按钮,你想要接下来的焦点(比如击中输入或者类似)。
http://developer.android.com/reference/android/view/View.html#attr_android:nextFocusDown
还有一些可用的编程选项:
http://developer.android.com/reference/android/view/View.html#setNextFocusDownId(int)
答案 5 :(得分:3)
你可能正在寻找android:nextFocusRight,android:nextFocusLeft,android:nextFocusUp和android:nextFocusDown属性。如果tab键的默认行为是将焦点向下移动到第二行,那么我认为你可以将android:nextFocusDown设置为你想要获得焦点的视图的id。然后,当用户按Tab键时,它会将焦点移动到您指定的任何视图,即使在这种情况下它恰好位于当前视图的右侧,而不是在其下方。
答案 6 :(得分:1)
将android:nextFocusLeft
替换为android:nextFocusForward
。