【Android】EditText的一个问题
EditText用于编辑文字,经常需要监听输入的字符,尤其是回车,删除等特殊字符,除了addTextChangedListener这个比较简单的方法之外,还有类似于下面的方法:
1 editText.setOnKeyListener(new View.OnKeyListener() { 2 @Override 3 public boolean onKey(View v, int keyCode, KeyEvent event) { 4 Log.d("RFV", "~~ " + keyCode); 5 if (event.getAction() == KeyEvent.ACTION_DOWN 6 && keyCode == KeyEvent.KEYCODE_DEL) { 7 if (itemList.size() > 0 && editText.length() == 0) { 8 removeItem(); 9 if(listener != null) 10 listener.dataChange(); 11 } 12 } 13 14 if(event.getAction() == KeyEvent.ACTION_DOWN 15 && keyCode == KeyEvent.KEYCODE_BACK){ 16 if(listener != null) 17 listener.back(); 18 } 19 20 if (keyCode == KeyEvent.KEYCODE_ENTER) { 21 String name = editText.getText().toString(); 22 if (!TextUtils.isEmpty(name)) { 23 addItem(name); 24 if(listener != null) 25 listener.dataChange(); 26 editText.setText(""); 27 editText.requestFocus(); 28 } 29 return true;//直接拦截所有DOWN,UP事件 30 } 31 return false; 32 } 33 });
从代码中我们很容易看到这个方法不但可以监听事件(Down和Up),还能监听到底是哪一个按键。下面讲两点,我犯过错误:
1)关于最后的return false:我曾经写过return true,发现不能输入数字(标准输入法下),我的猜测是,在每次EditText接受输入之前,事件都会首先经过OnKeyListener,如果返回true,则事件不会再被传递;
2)关于最后一个判断,之前我也和前面两个判断一样,加入了判断是否是Down事件的判断,然后我发现很奇怪事情,那就是当我点击回车之后,editText一直无法获取焦点,去掉之后可以,一个猜测是因为Down事件返回的是true,所以Up事件一定会传递到这里进行处理,又因为Up事件返回的是false,所以又会继续被处理,而这个时候焦点很可能被转移到键盘(其实不是很准确,应该另有原因)
转载于:https://www.cnblogs.com/lqminn/archive/2013/03/09/2950995.html
【Android】EditText的一个问题相关推荐
- android edittext限制字节_android EditText输入限制
zyz 发表于 2012-5-30 18:19:03 android EditText输入限制 android:digits="1234567890.+-*/%\n()" 限制输入 ...
- android edittext html 图片,Android EditText加载HTML内容(内容包含网络图片) -电脑资料...
android中的Html.fromHtml可以用来加载HTML的内容,fromHtml有三个参数需要设置,第一个是要显示的html内容,第二个就是要说的重点,ImageGetter,用来处理图片加载 ...
- Android EditText+ListPopupWindow实现可编辑的下拉列表
使用场景 AutoCompleteEditText只有开始输入并且与输入的字符有匹配的时候才弹出下拉列表.Spinner的缺点是不可以编辑.所以本文介绍如何使用EditText+ListPopupWi ...
- Android EditText不弹出输入法焦点问题的总结
同样的代码,碰到有EditText控件的界面时有的机子会弹出输入法,有的机子不会弹出.不好意思,这问题我也一头雾水,谁知道可以告诉我,否则我就把这个问题留下来,以后研究android 源码时再搞个清楚 ...
- 怎么用Android做登录界面,利用Android怎么制作一个APP登录界面
利用Android怎么制作一个APP登录界面 发布时间:2020-12-02 17:09:10 来源:亿速云 阅读:79 作者:Leah 这期内容当中小编将会给大家带来有关利用Android怎么制作一 ...
- android EditText inputType
android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用.这也大大的方便的操作.有时需要虚拟键盘只为字符或只为数字.所以inputType尤为重要. < ...
- android edittext 不可编辑
今天,简单讲讲如何让 edittext 不可编辑. 这个很简单,不过之前忘记了,还是查找了部分资料,所以这里记录一下. 1.android:editable="false" ...
- android设置输入框输入字符限制,Android EditText限制输入字符的方法总结
Android EditText限制输入字符的方法总结 最近项目要求限制密码输入的字符类型, 例如不能输入中文. 现在总结一下EditText的各种实现方式, 以比较各种方法的优劣. 第一种方式 ...
- Android 中编写一个简易购物车,商品包括商品名称,单价,数量,可以对商品进行增删改查功能。(ArrayList,SQLite)
Android 中编写一个简易购物车,商品包括商品名称,单价,数量,可以对商品进行增删改查功能.(ArrayList,SQLite) 布局(activity_main.xml): <?xml v ...
- android 输入法 悬浮窗口,Android EditText悬浮在输入法之上
Android EditText悬浮在输入法之上 使用 android:windowSoftInputMode="adjustResize" 会让界面整体被顶上去,很多时候我们不需 ...
最新文章
- 如何改变eclipse控制台编码
- 互联网金融下一个风口的或许在新农业领域?
- mysql优化器分析器_MySQL查询优化器的概念和原理整个执行过程
- 说说计算机发展史在你印象里都有哪些内容,《老王》导学案及答案
- onLayout与onMeasure
- 【BZOJ5251】【九省联考2018】—劈配(网络流)
- pod的介绍、命令行创建pod
- 如何免费下载百度文库文档
- vscode自动排版_微信公众号排版 | 最适合程序员的公众号排版
- Python爬取中国票房网所有电影片名和演员名字,爬取齐鲁网大陆所有电视剧名称...
- Java中的parallelStream
- etr2模式,时力高HXD1C转换开关KRGV+ETR2
- CloudNative:云原生(分布式云)的简介(发展演变/为什么需要/优势价值/安全/对比传统企业应用)、四大核心技术、CNCF云原生交互景观、云原生技术的使用经验及方法之详细攻略
- [C语言]统计成绩问题:输入某班学生某门课的成绩(最多不超过40人,具体人数由用户键盘输入),用函数编程统计不及格人数。
- Javascript实现全屏阅读和复制功能
- 用户运营:如何用B端运营思维做用户增长?
- ai描边工具怎么打开_AI描边工具命令讲解,教你ai描边功能实用技巧
- java zip 字符串_java字符串的压缩解压
- 协议(五)-从电报机到智能手机
- IDriss是一个Web3身份协议,选择马蹄链注册大概10刀
热门文章
- python能绘制统计图吗-使用Python绘制图表大全总结
- python 创建txt文件并写入字符串-python创建txt文件
- python3.7安装包-Python3.7.6下载
- python装饰器作用-python 装饰器
- python话雷达图-python使用matplotlib绘制雷达图
- 编程软件python下载-Thonny(Python编程工具) v3.2.7 官方版
- 开课吧python好吗-如何选择python培训机构?开课吧python培训怎么样?
- python自学网站推荐-有哪些值得推荐的Python学习网站?
- python编程300集免费-python 300本电子书合集
- mybatis中ResultSetHandler的设计与实现