将EditText imeOptions设置为actionNext无效

Kat*_*lon 85 android focus ime android-layout

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

对于EditText v2,我将imeOptions作为

android:imeOptions="actionNext"
Run Code Online (Sandbox Code Playgroud)

但是,当我运行应用程序时,键盘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>
Run Code Online (Sandbox Code Playgroud)

Sur*_*mar 175

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

  • 虽然,'android:singleLine ="true"`已弃用,但有些技巧如何,而`maxLine ="1"`不起作用. (9认同)
  • 不能使用`wrap_content`.设置`inputType`解决了我的问题. (4认同)
  • 使用`android:maxLines ="1"`代替`android:singleLine ="true"`作为其弃用 (3认同)
  • 尝试将EditText的高度设置为wrap_content. (2认同)
  • 您必须设置inputType ="text"才能使imeoptions工作. (2认同)

pra*_*ala 48

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

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


vog*_*Dev 41

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"
        />
Run Code Online (Sandbox Code Playgroud)


wel*_*k91 16

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

事实证明,当您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" />
Run Code Online (Sandbox Code Playgroud)

工作守则

        <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" />
Run Code Online (Sandbox Code Playgroud)

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


小智 10

不推荐使用单行,因此您添加以下代码我认为inputType必须.

        <EditText 
            android:inputType="text"
            android:maxLines="1"
            android:imeOptions="actionNext" />
Run Code Online (Sandbox Code Playgroud)


Ali*_*waz 9

最后我确定这个问题的解决方案只需在编辑文本中添加这三行,它就能正常工作

        android:maxLines="1"
        android:inputType="text"
        android:imeOptions="actionDone"
Run Code Online (Sandbox Code Playgroud)

在这里,您可以根据您的要求添加maxLines.不要使用singleLine,因为它现在已弃用.祝好运!


小智 7

android:inputType="text"
Run Code Online (Sandbox Code Playgroud)

您必须指定inputType才能使imeOptions起作用.


Goo*_*ian 7

这三行就够了。

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Run Code Online (Sandbox Code Playgroud)

  • android:singleLine="true" 自 API 级别 15 起已被弃用 (https://developer.android.com/reference/android/R.attr.html#singleLine) 请改用 android:maxLines="1"。 (2认同)

小智 5

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

<EditText 
   android:inputType="number"
   android:maxLines="1"
   android:imeOptions="actionSearch" />
Run Code Online (Sandbox Code Playgroud)


Zak*_*nov 5

只有这对我有用。

更改:

android:maxLines="1"
android:inputType="text"
android:imeOptions="actionNext"
Run Code Online (Sandbox Code Playgroud)

对此:

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Run Code Online (Sandbox Code Playgroud)


小智 5

下面的代码是力

android:inputType="text"
Run Code Online (Sandbox Code Playgroud)


Lio*_*ong 5

只放入你的 EditText xml

android:inputType="text"
Run Code Online (Sandbox Code Playgroud)