【问题标题】:actionDone imeOption doesn't work on EditText in Android 2.3actionDone imeOption 不适用于 Android 2.3 中的 EditText
【发布时间】:2011-04-07 09:37:46
【问题描述】:

我在 Android 2.3 中使用 EditText 时遇到问题。

我有一个用android:imeOptions="actionDone" 属性定义的EditText,但是当我通过虚拟键盘书写时,返回键没有检测到actionDone,它引入了一个返回行。

在 Android 2.2 中工作正常。

<EditText android:layout_height="wrap_content"
    android:layout_width="fill_parent" 
    android:imeOptions="actionDone" />

【问题讨论】:

  • 值得注意的是,我发现实现 TextWatcher 有时会对 actionDone 选项产生奇怪的影响。

标签: android android-edittext


【解决方案1】:

我已经解决了这个问题。我添加了android:singleLine="true" 属性,它工作正常。

<EditText android:layout_height="wrap_content"
    android:layout_width="fill_parent" 
    android:imeOptions="actionDone"
    android:singleLine="true" 
 />

【讨论】:

  • 谢谢。它也适用于android:imeOptions="actionNext" android:nextFocusDown="@+id/addjob_description" android:singleLine="true"
  • 有谁知道这为什么有效?不过,我不是在抱怨 :)))
  • 我相信它只在启用单行时才有效,因为它使用相同的按钮(至少在我的 Android 上)。
  • Paul,确实如此,因为在多行文本的情况下,默认的 ime 操作是回车。要将其更改为其他内容,应该有一个单行文本。
  • 还要注意设置一些 inputTypes 会导致 imeOption 被忽略。例如,即使将 imeOption 设置为 actionDone 之类的内容,将 inputType 设置为 textShortMessage 也会为您提供笑脸键。
【解决方案2】:

另一个值得注意的点是,如果您指定android:digitsandroid:imeOptions 将不起作用。不确定这是否会影响所有 android 版本。

【讨论】:

  • 是的,我注意到 Android 决定用它决定放入其中的任何内容来覆盖 imeOptions...大声笑,如果您无论如何都要重写它,为什么要放它。另一个 Android 烦恼。
【解决方案3】:

如果您使用,目前在 Android Studio 2.2.3 中

android:singleLine="true"

IDE 会发出警告说它已被弃用,请改用 maxlines。

android:maxLines="1"

但是 maxLines 并不能解决问题。 解决方案是添加属性inputType。 示例:

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/actionDoneDemo"
    android:layout_below="@id/nameET"
    android:imeOptions="actionDone"
    android:hint="Action Done Demo"
    android:inputType="text"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2016-02-16
    • 2018-06-27
    相关资源
    最近更新 更多