ImeOptions不能与AppCompatEditText一起使用

时间:2017-04-04 07:07:28

标签: java android imeoptions

我有一个包含EditText的片段,我正在尝试设置键盘事件,但它似乎无法正常工作。 actionId始终为0

<android.support.v7.widget.AppCompatEditText
    android:id="@+id/input_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_name"
    android:inputType="text"
    android:maxLines="1"
    android:imeOptions="actionNext"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"/>

name.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_NEXT) {
            save();
            handled = true;
        }
        return handled;
    }
});

我还尝试使用以下代码设置按钮标签,但它不起作用

name.setImeActionLabel("Next", KeyEvent.KEYCODE_ENTER);

2 个答案:

答案 0 :(得分:0)

我认为你误解了android:digits

查看android:digits

  

如果设置,则指定此TextView具有数字输入方法和   这些特定字符是它将接受的字符。如果   这是设置,数字暗示是真的。默认值为false。

android:digit指定此editText仅接受数字。在您的情况下,您使用abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ定义了没有数字的数据,这会导致 No onEditorAction() tirgger

此外,如果您设置setImeActionLabel() actionId将为0。

PS,
如果您想过滤editText的输入,则应选择InputFilter

答案 1 :(得分:0)

指定android:digits到字母表只接受字母表,键盘中的任何其他按钮点击都会被忽略。因此,将属性digits移除到EditText,并将验证添加到在java文件中输入的数据。