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