首页 > 移动平台 > 详细

android UI-EditText的长度监听慎用TextWatcher

时间:2015-11-16 19:00:39      阅读:640      评论:0      收藏:0      [点我收藏+]

在用户昵称的输入时,限定8个字符,本意是在输入超过8个时候,页面toast一个提示,就是下面的TextWatcher的监听,在afterTextChanged中处理。

但是在部分机型:huawei MT2-C00 Android4.4.2,以及三星的某些手机会报错,中英文混合输入等情况的判断并不是想要的结果,具体的原因和解决方法没有找到。

只能删掉这个TextWatcher

技术分享
 1         // 昵称最多为8个字符
 2         mUsernameEditText.addTextChangedListener(new TextWatcher() {
 3             private CharSequence temp;
 4             private int editStart;
 5             private int editEnd;
 6 
 7             @Override
 8             public void beforeTextChanged(CharSequence s, int arg1, int arg2, int arg3) {
 9                 temp = s;
10             }
11 
12             @Override
13             public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) {
14             }
15 
16             @Override
17             public void afterTextChanged(Editable s) {
18                 editStart = mUsernameEditText.getSelectionStart();
19                 editEnd = mUsernameEditText.getSelectionEnd();
20                 if (temp.length() > 8) {
21                     s.delete(Math.max(editStart - 1, 0), editEnd);
22                     showToast("昵称最多为8个字符");
23                     int tempSelection = editStart;
24                     mUsernameEditText.setText(s);
25                     mUsernameEditText.setSelection(s.length());
26                 }
27             }
28         });
View Code

退而求其次,直接限制输入长度,不toast提示了,直接忽略第8个字符之后的输入。

// 昵称最多为8个字符
mUsernameEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(8)});

以上只是简单的字符数目判断,不区分特殊字符和中英文,中英文每个字都算作一个字符。

Android机型太多,还是保证了安全,牺牲了体验。

android UI-EditText的长度监听慎用TextWatcher

原文:http://www.cnblogs.com/permanent2012moira/p/4969539.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!