【问题标题】:Setting EditText imeOptions to actionNext has no effect将 EditText imeOptions 设置为 actionNext 无效
【发布时间】:2014-05-27 01:02:27
【问题描述】:

我有一个相当复杂(不是真的)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>

【问题讨论】:

  • 我不确定这是否适用于非同级视图,但您可以尝试添加 android:nextFocusDown="@id/edit_text_v4"(也可以尝试添加 android:nextFocusForward 或其他一些 nextFocus 属性)。
  • @Karakuri 没用。请注意,下一个按钮根本没有出现。该按钮仍然是返回按钮。
  • @KatedralPillon 你解决了吗?如果是,那么您可以在这里发布您的解决方案吗?我也面临同样的问题。

标签: android android-layout focus ime


【解决方案1】:

只需将 android:maxLines="1" &amp; android:inputType="text" 添加到您的 EditText。它会工作的! :)

【讨论】:

  • 尝试将 EditText 的高度设置为 wrap_content。
  • 不适用于wrap_content 。设置inputType 解决了我的问题。
  • 不推荐使用android:maxLines="1" 而不是android:singleLine="true"
  • 虽然,`android:singleLine="true"` 已被弃用,但有一些技巧,而 maxLine="1" 不起作用。
  • 您必须设置 inputType="text" 才能使 imeoptions 工作。
【解决方案2】:

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】:

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

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

    【讨论】:

    • 这是正确答案!!如果没有 inputType,imeOptions 和 maxLines 将不起作用
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:
      <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 究竟做了什么。
      【解决方案6】:

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

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

      【讨论】:

        【解决方案7】:
        android:inputType="text"
        

        您必须指定一个 inputType 才能使 imeOptions 起作用。

        【讨论】:

        • 如果最后一项是表单中的密码怎么办?
        【解决方案8】:

        我终于找到了解决这个问题的办法 只需在您的编辑文本中添加这 3 行,它就会正常工作

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

        这里你可以根据你的要求添加ma​​xLines不要使用 singleLine,因为它现在已被弃用。 祝你好运!

        【讨论】:

          【解决方案9】:

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

          事实证明,当您在 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" />
          

          我不喜欢使用已弃用的属性,但现在它似乎得到了想要的结果。

          【讨论】:

          • 感谢已弃用,但它正在工作!以后有什么问题吗?
          【解决方案10】:

          只有这对我有用。

          改变它:

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

          关于那个:

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

          【讨论】:

          • inputType="text" 为我做了。
          【解决方案11】:

          下面的代码是强制的

          android:inputType="text"
          

          【讨论】:

            【解决方案12】:

            这三行就够了。

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

            【讨论】:

            【解决方案13】:

            只放入你的 EditText xml

            android:inputType="text"
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-02-18
              • 2021-10-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-07-30
              • 2019-07-21
              • 2011-03-28
              相关资源
              最近更新 更多