我有一个包含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);
答案 0 :(得分:0)
我认为你误解了android:digits
如果设置,则指定此TextView具有数字输入方法和 这些特定字符是它将接受的字符。如果 这是设置,数字暗示是真的。默认值为false。
android:digit
指定此editText
仅接受数字。在您的情况下,您使用abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
定义了没有数字的数据,这会导致 No onEditorAction()
tirgger 。
此外,如果您设置setImeActionLabel()
, actionId将为0。
PS,
如果您想过滤editText
的输入,则应选择InputFilter
。
答案 1 :(得分:0)
指定android:digits
到字母表只接受字母表,键盘中的任何其他按钮点击都会被忽略。因此,将属性digits
移除到EditText
,并将验证添加到在java文件中输入的数据。