EditText设置IME动作问题
16lz
2021-01-23
在Android Studio的Templates中的Login Activity中,看到了EditText中可以设置android:imeOptions、android:imeActionId以及android:imeActionLabel的属性来定义Enter键的内容
控件EditText设置如下
运行图如下所示,可以看到红色箭头所示的地方Enter键的内容是自定义的label值 监听函数如下所示
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { if (id == R.id.login || id == EditorInfo.IME_NULL) { attemptLogin(); return true; } return false; } });但是加了断点测试的时候,id的值总是是EditorInfo.IME_NULL的值,而不是EditText控件中定义的R.id.login的值,去掉android:imeOptions也依然只响应EditorInfo.IME_NULL的值
网上查了一些资料后发现,如果用android:imeOptions的默认属性,那么在onEditorAction的回调函数中得到的id值就只能是EditorInfo中已经定义好的那些值
如果要响应自定义的android:imeActionId的值,必须自己定义一个resources文件,如integers.xml,在里面定义id的值
<?xml version="1.0" encoding="utf-8"?> 100
控件EditText设置如下
即可在onEditorAction的回调函数中响应自己定义的id的值 (即如果设置android:imeActionId="@+id/login",回调函数中的id值不会是R.id.login)
参考资料:https://plus.google.com/+CyrilMottier/posts/FBZrVnbUCXZ
更多相关文章
- Android 中自定义View的应用.
- Androidの自定义圆角按钮button
- android自定义Toast之-弹出消息
- SeekBar的使用和自定义
- Android Studio 学习 - 基本控件的使用;Intent初学
- Robolectric使用(四)自定义
- 【Android】 横向纵向滚轮控件