前段時間比較忙 沒來的及時分享出來.需求是這樣的要求用戶只能輸入12個字符或者6位中文的數據:作為一個菜鳥遇到這樣的問題第一反應就是 Android:maxLength="12"這么個屬性然而去測試發現中文也是十二個的瞬間被上司叫過去就是一頓說。沒辦法還得改方法可是作為菜鳥的我只知道這一個方法;只能去百度了打開百度以后發現大部分方法都是一樣都是用editText.addTextChangedListener()這個方法處理的;可是作為菜鳥的我對於這方法還是不熟悉於是運行過程中出現了各種問題。。幾近周折還是沒解決,時間實在趕沒辦法換個方法於是找到了這個方式editText.setFilters( new InputFilter[]{new InputFilter.LengthFilter(MAX_LENGTH) });一開始也是一對問題直到在http://www.android100.org/html/201406/03/16568.html網站找到了這么個方法
InputFilter filter = new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { for (int i = start; i < end; i++) { if ( !Character.isLetterOrDigit(source.charAt(i)) && !Character.toString(source.charAt(i)) .equals("_") && !Character.toString(source.charAt(i)) .equals("-")) { return ""; } } return null; } };
但是看不懂也不知道是什么意思啊一開始沒有管。。問題沒解決找了個大牛詢問最終得到了結果如下:
// 這個方法,返回空字符串,就代表匹配不成功,返回null代表匹配成功
public CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend) 經過大牛的提點算是奔着完成任務寫代碼的方式實現了最終的需求代碼如下:
mEditText.setFilters(new InputFilter[]{new InputFilter() { // 這個方法,返回空字符串,就代表匹配不成功,返回null代表匹配成功 @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { // 獲取字符個數(一個中文算2個字符) if (getTextLength(dest.toString()) + getTextLength(source.toString()) >= MAX_LENGTH) { return ""; } return null; } }});
getTextLength(String text);方法
/** * 獲取字符數量 漢字占2個,英文占一個 * * @param text * @return */ public static double getTextLength(String text) { double length = 0; for (int i = 0; i < text.length(); i++) { // text.charAt(i)獲取當前字符是的chart值跟具ASCII對應關系255以前的都是英文或者符號之等而中文並不在這里面所以此方法可行</span> if (text.charAt(i) > 255) { length += 2; } else { length++; } } return length; }
getTextLength(String text);方法
- 頂
- 踩
- 猜你在找
AndroidEditText限制文字輸入
限制Android的EditText輸入文字時換行
Android中限制EditText輸入框文字輸入長度
android如何改變editText控件中部分文字的格式
Android開發技術點1Fragment中EditText文字的記憶性
核心技術類目
全部主題
Hadoop
AWS
移動游戲
Java
Android
iOS
Swift
智能硬件
Docker
OpenStack
VPN
Spark
ERP
IE10
Eclipse
CRM
JavaScript
數據庫
Ubuntu
NFC
WAP
jQuery
BI
HTML5
Spring
Apache
.NET
API
HTML
SDK
IIS
Fedora
XML
LBS
Unity
Splashtop
UML
components
Windows Mobile
Rails
QEMU
KDE
Cassandra
CloudStack
FTC
coremail
OPhone
CouchBase
雲計算
iOS6
Rackspace
Web App
SpringSide
Maemo
Compuware
大數據
aptech
Perl
Tornado
Ruby
Hibernate
ThinkPHP
HBase
Pure
Solr
Angular
Cloud Foundry
Redis
Scala
Django
Bootstrap
暫無評論