将EditText imeOptions设置为actionNext无效


94

我有一个相当复杂(不是真的)的xml布局文件。视图之一是v1带有两个子控件的LinearLayout():一个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>

我不确定这是否适用于非同级视图,但是您可以尝试添加android:nextFocusDown="@id/edit_text_v4"(也可以尝试添加android:nextFocusForward或添加其他nextFocus属性)。
Karakuri 2014年

@Karakuri它没有用。请注意,下一个按钮根本没有显示。该按钮仍然是返回按钮。
Katedral Pillon 2014年

1
@KatedralPillon您能解决吗?如果是,那么您可以在此处发布您的解决方案吗?我正面临着同样的问题。
h4ck3d 2014年

Answers:


189

只需添加android:maxLines="1" & android:inputType="text"到您的EditText。会的!!:)


3
尝试将EditText的高度设置为wrap_content。
Surendra Kumar 2014年

4
也无法使用wrap_content inputType在我的情况下设置解决了问题。
manfcas '16

3
使用android:maxLines="1"而不是android:singleLine="true"不推荐使用
blueware's October

9
虽然不赞成使用android:singleLine =“ true”`,但其中的一些技巧maxLine="1"是行不通的。
Paresh P.

2
您必须设置inputType =“ text”才能使imeoptions有效。
杜兰·杰森

49

singleLine不推荐使用。添加输入类型(例如:)android:inputType="text"也对我有用。

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


1
这是正确的答案!如果没有inputType,imeOptions和maxLines将不起作用
Christopher Smit

43

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"
        />

21

此处给出的答案都非常有帮助,但是我仍在努力让键盘的“ Next”显示。

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

答案实际上是使用不推荐使用的 android:singleLine="True"。这似乎迫使IME Option得到尊重。

旧的无效代码

        <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" />

我不喜欢使用不推荐使用的属性,但是目前看来,它已经达到了预期的效果。


感谢不赞成,但它的工作!将来会发生什么问题吗?
Arbaz.19年

11

不建议使用单行,因此您添加以下代码,我认为inputType必须。

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

10

最后,我已经确定该问题的解决方案,只需在您的编辑文本中添加这3行,它将可以正常工作

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

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


8
android:inputType="text"

您必须指定一个inputType以便imeOptions起作用。


如果最后一项是表单中的密码怎么办?
–silentsudo

5

此处的关键是设置输入类型和imeOptions属性

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

5

只有这个对我有用。

更改:

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

关于:

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

inputType =“ text”为我做到了。
Hackmodford

相同的inputeType =“ text”对我有用
wesley坦率

4
<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"/>

到底是actionUnspecified做什么的。
Shubham Naik


4

这三行就足够了。

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.