在表格布局中使用 android:imeOptions="actionNext" 时出现问题

Posted

技术标签:

【中文标题】在表格布局中使用 android:imeOptions="actionNext" 时出现问题【英文标题】:Problem using android:imeOptions="actionNext" in Table Layout 【发布时间】:2011-06-08 13:06:05 【问题描述】:

我的表格布局包含 3 个 EditText 字段和一个执行计算的按钮。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_
 android:layout_>
 <TextView
  android:layout_
  android:layout_
  android:text="@string/lbl_fuel_order"
  android:textSize="18dp"
  android:gravity="center_horizontal"/>
 <TableLayout
  android:layout_
  android:layout_
  android:layout_gravity="center"
  android:stretchColumns="*">
  <TableRow>
   <TextView
    android:layout_
    android:layout_
    android:text="@string/lbl_arr_kgs"
    android:textSize="12dp"
    android:layout_weight="1"/>
   <TextView
    android:layout_
    android:layout_
    android:text="@string/lbl_sg"
    android:textSize="12dp"
    android:layout_weight="1"/>
  </TableRow>
  <TableRow>
   <EditText
    android:id="@+id/arr_fuel"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:lines="1"
    android:inputType="number"
    android:imeOptions="actionNext"/>
   <EditText
    android:id="@+id/sg"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:lines="1"
    android:inputType="numberDecimal"
    android:imeOptions="actionNext"/>
  </TableRow> 
  <TableRow>
   <TextView
    android:layout_
    android:layout_
    android:text="@string/lbl_req_tanks_kgs"
    android:textSize="12dp"
    android:layout_weight="1"/>
  </TableRow>
  <TableRow>
   <EditText
    android:id="@+id/req_tanks_fuel"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:lines="1"
    android:inputType="number"
    android:imeOptions="actionNext"/>
   <Button
    android:id="@+id/btn_calc_fuel_order"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:text="@string/lbl_calc"/>
  </TableRow>
  <TableRow>
   <TextView
    android:layout_
    android:layout_
    android:text="@string/lbl_uplift_kgs"
    android:textSize="12dp"
    android:layout_weight="1"/>
   <TextView
    android:layout_
    android:layout_
    android:text="@string/lbl_uplift_l"
    android:textSize="12dp"
    android:layout_weight="1"/>
  </TableRow>
  <TableRow>
   <TextView
    android:id="@+id/req_weight"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:gravity="left"
    android:lines="1"
    android:text="000000"
    android:textSize="24dp"
    android:textColor="#ff0000"/>
   <TextView
    android:id="@+id/req_volume"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:gravity="left"
    android:lines="1"
    android:text="111111"
    android:textSize="24dp"
    android:textColor="#00ff00"/>
  </TableRow>
 </TableLayout>
    </LinearLayout>

左侧的 EditText,在表格布局的第一行,在活动开始时具有焦点。但是,当我在软键盘上单击下一步时,光标会移动到底行左侧的 EditText,而不是右侧(顶行)的 EditText。我已经测试了顶行中的右侧 EditText,它按照我的意愿将光标发送到底行的左侧 EditText。

有没有办法让光标先从顶行的左侧 EditText 向右移动,然后从那里移动到底行的左侧 EditText?

如果可能的话,我是否也可以安排它然后将焦点移到底行右侧的按钮上?

谢谢

【问题讨论】:

【参考方案1】:

android:lines="1" 添加到EditText 对我有帮助。

android:singleLine="true",正如另一个答案所建议的那样,自 API 级别 15 起已被弃用。

【讨论】:

【参考方案2】:

只需将 android:singleLine="true" 添加到您的 EditText。它会工作的! :)

【讨论】:

【参考方案3】:

试试这个...

TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();

一旦您点击软键盘上的 NEXT 按钮,Android 会搜索最近的可用 NEXT 文本字段来转移焦点。您可以指定应该说服搜索的方向。您还可以阅读 IME(Input Method Editors) options

【讨论】:

文章链接失效。也许这就是你所指的? android-developers.blogspot.it/2009/04/…

以上是关于在表格布局中使用 android:imeOptions="actionNext" 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局的表格视图中的水平集合视图

table-layout

如何在表格布局中使用 Richfaces 的自动完成功能?

在表格布局中使用 android:imeOptions="actionNext" 时出现问题

table-layout:fixed的作用

如何在表格布局中添加滚动视图?