日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)...

發布時間:2024/6/18 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
限定EditText輸入個數的解決方案很多,但是一般主要考慮兩點,也就是處理兩件事:
(1)不同語言字符(英文、中文等)處理方式
(2)輸入字符達到數目后,是否仍然允許用戶輸入

第一點,涉及的東東其實蠻多,不同語言在不同編碼中占據字節數等,不同語言在U8等編碼的表示范圍等,這一整塊知識很豐富,

自己暫時沒有理的特別順,稍后整理再說吧。

第二點,目前主流app的處理方案也各有不同,qq5.0以前的版本,發表說說貌似是沒有字數限制的(我試了一個350字左右的照樣發),

5.0以后限制了,這樣如果用戶輸入字數超過限制便顯示負數,但是仍然允許用戶輸入,就是不能發表了。這樣就把處理權全部交給用戶了,

其實更省事了!

實現吧。

方法一:
布局中限制。android:maxLength=10 // 即限制最大輸入字符個數為10。(1)中英文都算一個字符。
(2)字數到,不能輸入

方法二:
InputFilter限制,同布局中限制類似。editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});(1)中英文都算一個字符。
(2)字數到,不能輸入

方法三:
TextWatcher限制。這里如果字數達到限制仍然允許用戶輸入的情況不多說,好實現。

crash問題:使用搜狗輸入法時,在字數將要或者已經達到限制之后,一次輸入大量中文(不按空格,一直打字,知道搜狗的緩存字符達到上限),

crash,stackoverflow 內存溢出。呵呵,百度輸入法不會哈。

解決:監聽器中動態去除、添加就ok了。見下邊方案一

方案一,中文按兩個,英文按一個。個數到限制,用戶不能輸入private TextWatcher textWatcher = new TextWatcher() {private int editStart;private int editEnd;private int maxLen = 10; // the max byte@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {Log.d(TextChanged, ---->beforeTextChanged : start = + start + count = + count + after = + after);}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {editStart = opinion.getSelectionStart();editEnd = opinion.getSelectionEnd();// 先去掉監聽器,否則會出現棧溢出opinion.removeTextChangedListener(textWatcher);if (!TextUtils.isEmpty(opinion.getText())) {String etstring = opinion.getText().toString().trim();while (calculateLength(s.toString()) > maxLen) {s.delete(editStart - 1, editEnd);editStart--;editEnd--;Log.d(TextChanged, editStart = + editStart + editEnd = + editEnd);}}opinion.setText(s);opinion.setSelection(editStart);// 恢復監聽器opinion.addTextChangedListener(textWatcher);// end by zyf --------------------------}private int calculateLength(String etstring) {char[] ch = etstring.toCharArray();int varlength = 0;for (int i = 0; i < ch.length; i++) {// changed by zyf 0825 , bug 6918,加入中文標點范圍 , TODO 標點范圍有待具體化if ((ch[i] >= 0x2E80 && ch[i] <= 0xFE4F) || (ch[i] >= 0xA13F && ch[i] <= 0xAA40) || ch[i] >= 0x80) { // 中文字符范圍0x4e00 0x9fbbvarlength = varlength + 2;} else {varlength++;}}Log.d(TextChanged, varlength = + varlength);// 這里也可以使用getBytes,更準確嘛// varlength = etstring.getBytes(CharSet.forName(GBK)).lenght;// 編碼根據自己的需求,注意u8中文占3個字節...return varlength;} };

方案二
// 達到限制字數后,如果在文字中間輸入文字或者空格,最后的字符會被刪除titleTv.addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {// add by zyf 0825 . 多余的從新輸入的位置刪除,而不是最后editStart = opinion.getSelectionStart();editEnd = opinion.getSelectionEnd();if (!TextUtils.isEmpty(titleTv.getText())) {int varlength = 0;int size = 0;String etstring = titleTv.getText().toString().trim();char[] ch = etstring.toCharArray();for (int i = 0; i < ch.length; i++) {size++;if (ch[i] >= 0x4e00 && ch[i] <= 0x9fbb) {varlength = varlength + 2;} elsevarlength++;if (varlength > 80) {break;}}if (varlength > 80) {s.delete(size - 1, etstring.length());// add by zyf 0825 . 多余的從新輸入的位置刪除,而不是最后// s.delete(editStart - 1, editEnd); // crash stackoverflow,解決方法參考上邊方案一}}}});

轉載于:https://www.cnblogs.com/xiaomaohai/p/6158000.html

總結

以上是生活随笔為你收集整理的【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一起草在线视频 | 中出 在线| 色狠狠av老熟女 | 欧美片一区二区 | 国产乱色精品成人免费视频 | 让男按摩师摸好爽 | 欧美精品自拍 | avt天堂网| 黄色一级图片 | 在线艹| 亚洲精品男人天堂 | 色撸撸在线| 操操操日日日 | 精品久久中文字幕 | 国产一区二区三区久久久 | 99ri在线观看| 天堂资源中文 | 无码日韩精品视频 | 国产精品国产一区二区 | 黄色小视频在线观看免费 | 国产一区精品在线观看 | 爱情岛论坛永久入址在线 | 国产精品毛片久久久久久久av | 日韩在线视频一区 | 欧美美女性高潮 | av调教 | 中文日韩字幕 | 夜夜爽日日澡人人添 | 日本公妇乱淫免费视频一区三区 | 日韩美女视频19 | 中日韩午夜理伦电影免费 | 综合另类 | 亚洲最大的网站 | 精品99久久久久成人网站免费 | 伊人66 | 国产一区二区三区播放 | 天天做日日做 | 欧美99久久精品乱码影视 | 天天av天天 | 神马午夜视频 | 狠狠干网址 | 僵尸艳谈| 草草影院在线观看视频 | 中文天堂在线资源 | 茄子爱啪啪 | 免费在线观看黄 | 思思99re| 亚洲午夜精品久久久久久人妖 | 色午夜婷婷 | 黑人精品无码一区二区三区 | 无码人妻丰满熟妇区毛片蜜桃精品 | 欧美视频在线观看一区二区 | 亚洲最大的成人网站 | 成人在线激情视频 | 人人草人人插 | 国产精品久久久久影院色老大 | 哪里可以免费看毛片 | 欧美精品网站 | 午夜做爰xxxⅹ性高湖视频美国 | 国产字幕侵犯亲女 | 黄色高清视频 | 天天玩天天操 | 国产精品免费一区二区三区在线观看 | 国产a∨精品一区二区三区仙踪林 | 欧美黑人激情 | 国产第一页在线 | 无码 制服 丝袜 国产 另类 | 成人免费网站在线 | 日韩二三区 | 国产精品人人人人 | 日日插夜夜爽 | 亚洲经典一区二区 | 在线视频免费播放 | 日本大胆裸体做爰视频 | 91资源在线视频 | 国产乱子伦精品无码专区 | 天天摸日日干 | 一级大毛片 | 欧美丰满美乳xxⅹ高潮www | 国产女人高潮毛片 | 国产欧美一区二区三区视频 | 亚洲国产精品免费在线观看 | 韩国三级做爰视频 | 亚洲天天在线 | 第一毛片| 欧美韩一区| 国产精品免费av一区二区三区 | 一区二区免费在线视频 | av噜噜在线 | 欧美韩日一区二区 | 亚洲一区二区三区四区视频 | 91夜色| aaa黄色片 | 激情文学亚洲色图 | 米奇色| 亚日韩欧美 | 日韩精品一区二区三区不卡 | www插插插 | 欧洲亚洲一区二区三区 |