在Android Studio的Templates中的Login Activity中,看到了EditText中可以设置android:imeOptions、android:imeActionId以及android:imeActionLabel的属性来定义Enter键的内容

控件EditText设置如下

<pre name="code" class="html"><EditTextandroid:id="@+id/password"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="@string/prompt_password"android:imeActionId="@+id/login"android:imeActionLabel="@string/action_sign_in_short"android:imeOptions="actionUnspecified"android:inputType="textPassword"android:maxLines="1"android:singleLine="true"/>

运行图如下所示,可以看到红色箭头所示的地方Enter键的内容是自定义的label值

监听函数如下所示

</pre><pre name="code" class="java">  mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {@Overridepublic 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"?>
<resources><integer name="action_sign_in">100</integer>
</resources>

控件EditText设置如下

<EditTextandroid:id="@+id/password"android:layout_width="match_parent"android:layout_height="wrap_content"android:imeActionId="@integer/action_sign_in"android:imeActionLabel="@string/sign_in_short"android:inputType="textPassword" />

即可在onEditorAction的回调函数中响应自己定义的id的值

(即如果设置android:imeActionId="@+id/login",回调函数中的id值不会是R.id.login)

参考资料:https://plus.google.com/+CyrilMottier/posts/FBZrVnbUCXZ


EditText设置IME动作问题相关推荐

  1. edittext 监听无效_Android中EditText 设置 imeOptions 无效问题的解决方法

    有时候我们需要在EditText  输出完之后 需要在键盘出现 右下角变成"Go"或"前往 搜索时:通常我们需要设置Android:imeOptions属性.Androi ...

  2. Android EditText设置弹出数字输入法键盘

    Android EditText 设置弹出数字输入法键盘 首先设置只能输入数字: <EditText Android:id="@+id/edit_digit_input" a ...

  3. Android EditText设置边框

    Android EditText设置边框 简介 Android应用程序中给EditText设置边框. 效果图: 快速开始 在res/drawable目录下新建样式文件 edit_background. ...

  4. andorid身份证输入格式--EditText设置

    身份证格式:410123 1993 0228 182X 这时需要设置,安卓默认弹出数字键盘,限定特殊的输入字符 如此EditText设置如下 <EditText                  ...

  5. maxlength不起作用android,Android EditText设置Filter以后(xml布局文件中maxLength不起作用的解决办法)...

    Android EditText设置Filter以后,xml布局文件中maxLength不起作用的解决办法 问题发现 最近项目里有个需求,文本框禁用emoji表情的输入,因为用到的地方较多,第一个想到 ...

  6. PPT单一对象设置多个动作、多个对象设置同一动作

    在制作PPT的时候,需要对一个对象设置多个动作,这时可以先选中要设置的对象,然后在动画菜单栏下,选择添加动画, 就可以在原有的动画基础上添加新的动画了. 如果想要对多个对象设置同一动作,则同时选中多个 ...

  7. 在两个页面间翻转设置Animation动作的一些总结

    今天碰到两个页面之间翻转的动作设计问题,发现了一些问题,故做个总结,很多都写在注释部分: 1.首先,我们来手动创建两个view以及相应的viewController.是手动,不是用IB (1)刚开始只 ...

  8. android edittext设置内容为空,android – 我将EditText的InputType设置为TYPE_NULL后无法更改...

    我将EditText的InputType设置为TYPE_NULL: editText.setInputType(InputType.TYPE_NULL); 我可以将它设置为TYPE_NULL,它有效! ...

  9. android edittext 不滚动,EditText 设置可以垂直滑动但是不可输入

    一.前言: android:id="@+id/edtInput" android:layout_width="match_parent" android:lay ...

最新文章

  1. 基于SSH的在线音乐点评网站-java在线音乐点评网站
  2. Silverlight中本地化的实现(语言切换)
  3. 模式识别 - 处理多演示样例学习(MIL)特征(matlab)
  4. mysql varchar 2000能存_mysql 数据库 varchar 到底可以存多少数据呢,长文慎入
  5. python模拟抛体运动_换个姿势学物理!用Python和Matplotlib进行模拟
  6. 有了linux基础还学习学哪些,学linux的前途和好处有哪些
  7. 苹果cmsV10资源站模板
  8. 最新最全论文合集——CCS 历年最佳论文汇总
  9. 不用USB连接线或没有ADB驱动如何调试安卓
  10. cesium获取当前屏幕中心点坐标
  11. bootcamp空间不足_mac安装双系统 提示磁盘上没有足够的可用空间的解决方法
  12. Android 无线 ADB 懒人打法:WiFiADB 调试
  13. POJ 3585 Accumulation Degree 树形dp
  14. 卡诺图最简化SOP/POS表达式
  15. Oracle grant all privileges to user
  16. java解压zip文件,处理文件名不能为中文
  17. 写歌第十四首《三月木棉花》
  18. 8051单片机的C语言编程
  19. ffmpeg学习日记612-指令-转换视频格式
  20. java邮箱登录学习笔记

热门文章

  1. Qt+openCV学习笔记(五)Qt5.15.2+openCV4.5.4+VS2019_64编译动态库
  2. 【Spark深入学习 -10】基于spark构建企业级流处理系统
  3. python中的filter(),map(),reduc…
  4. python 均匀分布_python 实现生成均匀分布的点
  5. android 经纬度 转换成地址,Android 百度地图经纬度转换成地址
  6. 淘宝宝贝标题优化2个字:日增10000个IP访问
  7. --------乱弹琴-------创造价值----侵略--和扩张
  8. 用python实现打字练习网站第一
  9. TUP第25期:IT自动化运维
  10. 在window上提交spark代码到远程测试环境上运行