Android EditText输入中英文字数控制
2015-01-09 10:19
411 查看
BUG描述:
进入WLAN界面,选择菜单->WLAN直连->重命名设备->最多可以输入30个中文,30个英文
[期望]
中文最多10个,英文最多32个
查找文件在源码中的位置:
# find ./ -path './out' -prune -o -name '*strings.xml' -print0 |xargs -0 grep -n '重命名设备'
./packages/apps/Settings/res/values-zh-rCN/strings.xml:664: <string name="wifi_p2p_menu_rename" msgid="8448896306960060415">"重命名设备"</string>./packages/apps/Settings/res/values-zh-rCN/strings.xml:668: <string name="wifi_p2p_failed_rename_message" msgid="2562182284946936380">"无法重命名设备。"</string>
# find ./ -path './out' -prune -o -name '*.java' -print0 |xargs -0 grep -n 'wifi_p2p_menu_rename'
./packages/apps/Settings/src/com/android/settings/wifi/p2p/WifiP2pSettings.java:348: menu.add(Menu.NONE, MENU_ID_RENAME, 0,R.string.wifi_p2p_menu_rename)
./packages/apps/Settings/src/com/android/settings/wifi/p2p/WifiP2pSettings.java:475: .setTitle(R.string.wifi_p2p_menu_rename)
root@hy:~/code/HUIYUE92_LWT_2S_KK_20141122# find ./ -path './out' -prune -o -name '*.xml' -print0 |xargs -0 grep -n 'wifi_p2p_menu_rename'
调用方式:
示例代码(新建NameLengthFilter类):
进入WLAN界面,选择菜单->WLAN直连->重命名设备->最多可以输入30个中文,30个英文
[期望]
中文最多10个,英文最多32个
查找文件在源码中的位置:
# find ./ -path './out' -prune -o -name '*strings.xml' -print0 |xargs -0 grep -n '重命名设备'
./packages/apps/Settings/res/values-zh-rCN/strings.xml:664: <string name="wifi_p2p_menu_rename" msgid="8448896306960060415">"重命名设备"</string>./packages/apps/Settings/res/values-zh-rCN/strings.xml:668: <string name="wifi_p2p_failed_rename_message" msgid="2562182284946936380">"无法重命名设备。"</string>
# find ./ -path './out' -prune -o -name '*.java' -print0 |xargs -0 grep -n 'wifi_p2p_menu_rename'
./packages/apps/Settings/src/com/android/settings/wifi/p2p/WifiP2pSettings.java:348: menu.add(Menu.NONE, MENU_ID_RENAME, 0,R.string.wifi_p2p_menu_rename)
./packages/apps/Settings/src/com/android/settings/wifi/p2p/WifiP2pSettings.java:475: .setTitle(R.string.wifi_p2p_menu_rename)
root@hy:~/code/HUIYUE92_LWT_2S_KK_20141122# find ./ -path './out' -prune -o -name '*.xml' -print0 |xargs -0 grep -n 'wifi_p2p_menu_rename'
调用方式:
etTest = (EditText) findViewById(R.id.et_ch_en); InputFilter[] filters = { new NameLengthFilter(32,10) }; etTest.setFilters(filters);
示例代码(新建NameLengthFilter类):
private class NameLengthFilter implements InputFilter { int MAX_EN; int MAX_CN; String regEx = "[\\u4e00-\\u9fa5]"; // unicode编码,判断是否为汉字 public NameLengthFilter(int mAX_EN, int mAX_CN) { super(); MAX_EN = mAX_EN; MAX_CN = mAX_CN; } @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { int cnDesCount = getChineseCount(dest.toString());//已经存在中文个数 int allDesCount = dest.toString().length();//已经存在所有字符个数 int cnSourceCount = getChineseCount(source.toString());//新加入中文个数 int allSourceCount = source.toString().length();//新加入所有字符个数 if (cnDesCount + cnSourceCount <= MAX_CN && enDesCount + enSourceCount <= MAX_EN) { return source; }else { return ""; } } private int getChineseCount(String str) { int count = 0; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); while (m.find()) { for (int i = 0; i <= m.groupCount(); i++) { count = count + 1; } } return count; } }
相关文章推荐
- android 关于EditText中关于输入字数的控制
- Android editText 输入字数限制
- 修改Android EditText光标,限制EditText的输入字数
- android同时控制EditText输入字符个数和禁止特殊字符输入的方法
- Android EditText输入字数限制总结(包括中文输入内存溢出的解决方法)
- Android开发输金额EditText输入控制
- android edittext InputFilter 输入控制
- android 利用正则表达式 控制edittext只能输入数字、英文、汉字
- Android开发中给EditText控件添加TextWatcher监听实现对输入字数的限制(推荐)
- Android EditText限制输入字数的方法
- Android 控制edittext或者textview输入的为指定的整数位和小数位
- android EditText限制输入的字数
- Android 控制EditText输入为英文或数字
- android editText输入文本框限制输入字数和字数提示
- android同时控制EditText输入字符个数和禁止特殊字符输入的方法
- Android editText 输入字数限制
- android EditText限制输入字数并显示剩余字数
- android使用正则表达式控制EditText只能输入数字和英文
- android EditText限制输入字数的方法
- android中editText 输入字数限制