你能在XML Layout中设置"Tab order"吗?

dal*_*sit 55 android

我的平板电脑用户的软键盘上有一个标签键.我正在使用表视图,并在一行中有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"/>
Run Code Online (Sandbox Code Playgroud)

Eri*_*rch 92

替换android:nextFocusLeftandroid:nextFocusDown."下一个"软键或TAB键正在寻找下一个"向下"焦点,而不是向左或向右.

  • 如果这不起作用,也尝试android:nextFocusForward. (3认同)
  • 那么当使用/调用nextFocusLeft和-Right时呢? (2认同)

And*_*zie 38

我还注意到你的参考:

android:nextFocusRight="@+id/bikeSST"
Run Code Online (Sandbox Code Playgroud)

如果尚未定义该id,则需要"+"字符,如果您引用的元素可能在.xml文件中较低.

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

android:nextFocusRight="@id/bikeSST"
Run Code Online (Sandbox Code Playgroud)

不使用的优点的"+"时,你会引用应该已经存在的ID,是IDE和绒毛检查可以检测出错误的情况:那你指的其实也一个ID 存在.

如果包含"+",那么如果不存在则创建它并且无法执行此检查.

  • 关于(+)id的非常有用的信息...谢谢! (3认同)

Ala*_*ier 10

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

它用虚拟键盘中的"下一步"替换回车键的名称,然后单击它 - 焦点跳转到下一个字段.

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

<EditText
    ...
    android:text="Field 1"
    android:imeOptions="actionNext" />
<EditText
    ...
    android:text="Field 2"
    android:imeOptions="actionNext" />
Run Code Online (Sandbox Code Playgroud)

而在Java中

TextView field2 = (TextView) field1.focusSearch(View.FOCUS_RIGHT);
field2.requestFocus();
Run Code Online (Sandbox Code Playgroud)

您可以决定下一个请求关注的字段.


Jas*_*ies 9

对我来说android:nextFocusUp,android:nextFocusRight,android:nextFocusDownandroid:nextFocusLeft没有工作,但android:nextFocusForward没有工作.

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