1

我有一个包含 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);
4

2 回答 2

0

我想你误解了android:digits

查看android:digits

如果设置,则指定此 TextView 具有数字输入法,并且这些特定字符是它将接受的字符。如果设置了此项,则暗示 numeric 为真。默认值为假。

android:digit指定这editText将只接受数字。在您的情况下,您定义它abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ没有数字,这导致No onEditorAction()tirgger

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

Ps,
如果你想过滤 an 的输入editText,你应该去InputFilter

于 2017-04-04T07:43:29.173 回答
0

指定android:digits字母仅接受字母,并且忽略键盘中的任何其他按钮单击。因此删除属性并添加验证digitsEditTextjava 文件中输入的数据。

于 2017-04-04T08:47:08.487 回答