Android控制文本輸入框最多輸入10個字符長度
最近遇到一個需求是要求用戶只能輸入10個字符或者五位中文的數(shù)據(jù),遇到這樣的問題第一反應(yīng)就是 android:maxLength=”10”這個屬性然而去測試發(fā)現(xiàn)中文也是十個。百度了一下發(fā)現(xiàn)setFilters這個方法,網(wǎng)上的例子是不管當前輸入框是否有值,只要輸入超出10個字符則不給輸入框賦值,個人感覺用戶體驗不太好,應(yīng)當根據(jù)當前輸入框內(nèi)的值來截取對應(yīng)長度的字符填充。
代碼如下:
et_name = (EditText) findViewById(R.id.et_name); // 控制輸入框最多輸入10個字符長度(五個漢字) et_name.setFilters(new InputFilter[] { new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { // 輸入內(nèi)容是否超過設(shè)定值,最多輸入五個漢字10個字符 if (getTextLength(dest.toString()) + getTextLength(source.toString()) > MAX_LENGTH) { // 輸入框內(nèi)已經(jīng)有10個字符則返回空字符 if (getTextLength(dest.toString()) >= 10) { return ""; // 如果輸入框內(nèi)沒有字符,且輸入的超過了10個字符,則截取前五個漢字 } else if (getTextLength(dest.toString()) == 0) { return source.toString().substring(0, 5); } else { // 輸入框已有的字符數(shù)為雙數(shù)還是單數(shù) if (getTextLength(dest.toString()) % 2 == 0) { return source.toString().substring(0, 5 - (getTextLength(dest.toString()) / 2)); } else { return source.toString().substring(0, 5 - (getTextLength(dest.toString()) / 2 + 1)); } } } return null; } }});
getTextLength(String text);方法
/** * 獲取字符數(shù)量 漢字占2個,英文占一個 * * @param text * @return */ public static int getTextLength(String text) { int length = 0; for (int i = 0; i < text.length(); i++) { if (text.charAt(i) > 255) { length += 2; } else { length++; } } return length; }
小小菜鳥第一次寫博客,參考了一些也修改了一些,如有侵犯請多包涵。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
創(chuàng)建Android守護進程實例(底層服務(wù))
這篇文章主要介紹了創(chuàng)建Android守護進程實例(底層服務(wù)),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android 實現(xiàn)電話攔截及攔截提示音功能的開發(fā)
本文主要介紹Android 實現(xiàn)電話攔截和攔截提示音功能的開發(fā),這里提供實現(xiàn)代碼和詳細講解,有需要的小伙伴可以參考下2016-08-08Android實現(xiàn)類似iOS風(fēng)格的對話框?qū)嵗a
通過本文給大家分享一個簡單的常用的對話框類,關(guān)于Android實現(xiàn)類似iOS風(fēng)格的對話框?qū)嵗a大家通過本文學(xué)習(xí)下吧2017-09-09Android編程獲取并設(shè)置Activity亮度的方法
這篇文章主要介紹了Android編程獲取并設(shè)置Activity亮度的方法,涉及Android針對屏幕亮度的相關(guān)操作技巧,需要的朋友可以參考下2015-12-12Android DrawLayout結(jié)合ListView用法實例
這篇文章主要介紹了Android DrawLayout結(jié)合ListView用法實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09Android 基于RecyclerView實現(xiàn)的歌詞滾動自定義控件
這篇文章主要介紹了Android 基于RecyclerView實現(xiàn)的歌詞滾動自定義控件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03Android屏幕旋轉(zhuǎn)之橫屏豎屏切換的實現(xiàn)
這篇文章主要介紹了Android屏幕旋轉(zhuǎn)之橫屏豎屏切換的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10