在具有指定数字的EditText上使用OnEditorActionListener

时间:2015-09-29 18:37:12

标签: java android

我有一个只接受小写字母字符的EditText,我使用digits完成。

<EditText
    android:id="@+id/play_edit_enter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:maxLength="1"
    android:inputType="textNoSuggestions"
    android:digits="qwertyuiopasdfghjklzxcvbnm"
    android:layout_marginTop="100dip"
    android:textSize="20sp"
    android:layout_centerHorizontal="true"
    android:imeOptions="actionDone"
    />

旁边还有一个执行操作的按钮。但是,我还希望能够在键盘上使用“Enter”键(缺少更好的名称)来调用该按钮。

    progressEditText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                progressButton.performClick();
                return true;
            }
            return false;
        }
    });

如果我摆脱android:digits="qwertyuiopasdfghjklzxcvbnm"行,这样可以正常工作。但我想用那条线。也许它不起作用的原因是因为Enter键不包含在那些数字中?

问:如果是这种情况,我需要添加什么?或者,我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

  

如果我摆脱了android:digits =“qwertyuiopasdfghjklzxcvbnm”行,这样可以正常工作。但我想用那条线。

您应该删除该行,因为它不会按照您的想法执行。它实际上指定EditText只接受数字,并且只接受您在值中指定的数字,在您的情况下为"qwertyuiopasdfghjklzxcvbnm",显然没有数字。

另见the docs

  

<强>机器人:位

     

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

我知道它是TextView,但EditText从TextView继承该属性。

你可以做的就是检查@android:inputType,看看它能为你做些什么。

http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType