将EditText imeOptions设置为actionNext无效

时间:2014-04-12 22:27:11

标签: android android-layout focus ime

我有一个相当复杂(不是真的)的xml布局文件。其中一个视图是带有两个子项的LinearLayout(v1):EditText(v2)和另一个LinearLayout(v3)。子LinearLayout又有一个EditText(v4)和一个ImageView(v5)。

对于EditText v2,我将imeOptions作为

android:imeOptions="actionNext"

但是当我运行该应用时,键盘的return不会检查next,我希望它更改为next。我该如何解决这个问题?

此外,当用户点击下一步时,我希望焦点转到EditText v4。我这样做吗?

对于那些真正需要查看代码的人:

<LinearLayout
        android:id="@+id/do_txt_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/col6"
        android:orientation="vertical"
        android:visibility="gone" >

        <EditText
            android:id="@+id/gm_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:background="@drawable/coldo_text"
            android:hint="@string/enter_title"
            android:maxLines="1"
            android:imeOptions="actionNext"
            android:padding="5dp"
            android:textColor="pigc7"
            android:textSize="ads2" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:orientation="horizontal" >

            <EditText
                android:id="@+id/rev_text"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/coldo_text"
                android:hint="@string/enter_msg"
                android:maxLines="2"
                android:padding="5dp"
                android:textColor="pigc7"
                android:textSize="ads2" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:background="@drawable/colbtn_r”
                android:clickable="true"
                android:onClick=“clickAct”
                android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:src="@drawable/abcat” />
        </LinearLayout>
    </LinearLayout>

12 个答案:

答案 0 :(得分:165)

只需将android:maxLines="1" & android:inputType="text"添加到EditText即可。它会工作!! :)

答案 1 :(得分:47)

singleLine已弃用。添加输入类型(例如:android:inputType="text")也对我有用。

使用android:maxLines="1",因为singleLine已被弃用

答案 2 :(得分:37)

android:singleLine已被弃用,最好将android:maxLines="1"android:inputType="text"合并。这将是代码:

<EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:maxLines="1"
        android:inputType="text"
        />

答案 3 :(得分:9)

单行已弃用,因此您添加以下代码我认为inputType必须。

        <EditText 
            android:inputType="text"
            android:maxLines="1"
            android:imeOptions="actionNext" />

答案 4 :(得分:8)

最后,我确定了解决这个问题的方法 只需在您的编辑文字中添加这些 3行即可正常使用

        android:maxLines="1"
        android:inputType="text"
        android:imeOptions="actionDone"

您可以根据需要添加 maxLines 使用 singleLine ,因为它现在已弃用。 祝你好运!

答案 5 :(得分:8)

这里给出的答案都非常有用,但我仍然在努力让键盘的“下一个”显示出来。

事实证明,当您在XML中使用Android的android:digits属性时,会阻止android:imeOptions="actionNext"按预期工作。

答案实际上是使用已弃用的android:singleLine="True"。这似乎迫使IME选项得到尊重。

旧的,非工作代码

        <android.support.design.widget.TextInputEditText
            android:id="@+id/first_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- "
            android:ellipsize="end"
            android:hint="@string/first_name"
            android:imeOptions="actionNext"
            android:inputType="textCapWords"
            android:maxLength="35"
            android:maxLines="1" />

工作代码

        <android.support.design.widget.TextInputEditText
            android:id="@+id/first_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- "
            android:ellipsize="end"
            android:hint="@string/first_name"
            android:imeOptions="actionNext"
            android:inputType="textCapWords"
            android:maxLength="35"
            android:maxLines="1"
            android:singleLine="true" />

我不喜欢使用不推荐使用的属性,但是现在它似乎得到了理想的结果。

答案 6 :(得分:7)

android:inputType="text"

您必须指定一个inputType才能使imeOptions正常运行。

答案 7 :(得分:6)

这三行就足够了。

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"

答案 8 :(得分:5)

下面的代码是强制的

android:inputType="text"

答案 9 :(得分:3)

这里的关键是设置输入类型和imeOptions属性

<EditText 
   android:inputType="number"
   android:maxLines="1"
   android:imeOptions="actionSearch" />

答案 10 :(得分:1)

<EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/auth_register_re_password"
            android:hint="Enter Password Again"
            android:imeActionLabel="login"
            android:gravity="center"
            android:imeOptions="actionUnspecified"
            android:inputType="textPassword"
            android:maxLines="1"
             />

答案 11 :(得分:0)

这仅对我有用。

更改它:

android:maxLines="1"
android:inputType="text"
android:imeOptions="actionNext"

对此:

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"