Android實(shí)現(xiàn) EditText輸入手機(jī)號(hào)空格功能
Android EditText輸入手機(jī)號(hào)空格
- 開發(fā)需求是在登錄頁(yè)面的手機(jī)EditText中間插入空格,讓用戶看起來(lái)方便點(diǎn), 130 1234 4567,中間第4個(gè)數(shù)字和第5個(gè)數(shù)字空格前面加空格。
- 要求還有一點(diǎn),就是除了輸入要加入空格,從其他地方復(fù)制過(guò)來(lái)的電話號(hào)碼,沒有空格的,也要在粘貼后,自動(dòng)補(bǔ)全空格。
- 思路:重寫TextWatcher,每次EditText內(nèi)容變化,都判斷內(nèi)容是否符合要求。
@Override public void afterTextChanged(Editable s) { //需求是130 1234 4567,中間第4個(gè)數(shù)字和第5個(gè)數(shù)字空格前面加空格 StringBuffer sb = new StringBuffer(s); //StringBuffer.length()是長(zhǎng)度,所以下標(biāo)從1開始 //字符數(shù)組第4位如果不是空格字符,就在他前面插一個(gè)空格字符 if (s.length() >= 4) { char[] chars = s.toString().toCharArray(); //數(shù)字下標(biāo)是從0開始 if (chars[3] != ' ') { sb.insert(3,' '); setContent(sb); } } if (s.length() >= 9) { char[] chars = s.toString().toCharArray(); //因?yàn)榈?位加了一個(gè)空格,所以第8位數(shù)字,就是字符數(shù)組的第9位,下標(biāo)是8。 if (chars[8] != ' ') { sb.insert(8,' '); setContent(sb); } } }
使用,就是把EditText內(nèi)容監(jiān)聽換成自己寫的。
etPhone.addTextChangedListener(new PhoneTextWatcher(etPhone) { @Override public void afterTextChanged(Editable s) { //如果還要做的監(jiān)聽事情,可以繼續(xù)寫 super.afterTextChanged(s); } });
完整代碼,里面有一個(gè)別人的方法,就這方法是粘貼時(shí),空格不自動(dòng)補(bǔ)全:
http://www.dbjr.com.cn/article/134183.htm
/** * Created by solexit04 on 2017/9/4. * 手機(jī)號(hào)中間插入空格 */ public class PhoneTextWatcher implements TextWatcher { private EditText editText; private boolean isDelete; private int lastContentLength; public PhoneTextWatcher(EditText editText) { this.editText = editText; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { /* StringBuffer sb = new StringBuffer(s); //是否為輸入狀態(tài) isDelete = s.length() > lastContentLength ? false : true; //輸入是第4,第9位,這時(shí)需要插入空格 if (!isDelete && (s.length() == 4 || s.length() == 9)) { if (s.length() == 4) { sb.insert(3, " "); } else { sb.insert(8, " "); } setContent(sb); } //刪除的位置到4,9時(shí),剔除空格 if (isDelete && (s.length() == 4 || s.length() == 9)) { sb.deleteCharAt(sb.length() - 1); setContent(sb); } lastContentLength = sb.length();*/ } @Override public void afterTextChanged(Editable s) { //需求是130 1234 4567,中間第4個(gè)數(shù)字和第5個(gè)數(shù)字空格前面加空格 StringBuffer sb = new StringBuffer(s); //StringBuffer.length()是長(zhǎng)度,所以下標(biāo)從1開始 //字符數(shù)組第4位如果不是空格字符,就在他前面插一個(gè)空格字符 if (s.length() >= 4) { char[] chars = s.toString().toCharArray(); //數(shù)字下標(biāo)是從0開始 if (chars[3] != ' ') { sb.insert(3,' '); setContent(sb); } } if (s.length() >= 9) { char[] chars = s.toString().toCharArray(); //因?yàn)榈?位加了一個(gè)空格,所以第8位數(shù)字,就是字符數(shù)組的第9位,下標(biāo)是8。 if (chars[8] != ' ') { sb.insert(8,' '); setContent(sb); } } } /** * 添加或刪除空格EditText的設(shè)置 */ private void setContent(StringBuffer sb) { editText.setText(sb.toString()); //移動(dòng)光標(biāo)到最后面 editText.setSelection(sb.length()); } }
總結(jié)
以上所述是小編給大家介紹的Android實(shí)現(xiàn) EditText輸入手機(jī)號(hào)空格功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android實(shí)現(xiàn)圖片異步加載及本地緩存
這篇文章主要介紹了Android實(shí)現(xiàn)圖片異步加載及本地緩存的相關(guān)資料,需要的朋友可以參考下2016-02-02Android實(shí)現(xiàn)recyclerview城市字母索引列表
大家好,本篇文章主要講的是Android實(shí)現(xiàn)recyclerview城市字母索引列表,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01Android之FanLayout制作圓弧滑動(dòng)效果
這篇文章主要介紹了Android之FanLayout制作圓弧滑動(dòng)效果,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08Flutter系統(tǒng)網(wǎng)絡(luò)圖片加載流程解析
這篇文章主要介紹了Flutter系統(tǒng)網(wǎng)絡(luò)圖片加載流程,從構(gòu)造函數(shù)開始說(shuō)起,我們以最簡(jiǎn)單的調(diào)用方式舉例,當(dāng)我們使用Image.network(imageUrl)這種方式來(lái)顯示圖片時(shí),Image組件內(nèi)部image屬性就會(huì)被賦值NetworkImage,具體操作步驟跟隨小編一起看看吧2022-05-05Android編程單選項(xiàng)框RadioGroup綜合應(yīng)用示例
這篇文章主要介紹了Android編程單選項(xiàng)框RadioGroup用法,結(jié)合實(shí)例形式分析了Android單選按鈕組RadioGroup的定義與具體使用技巧,需要的朋友可以參考下2016-10-10Android用注解與反射實(shí)現(xiàn)Butterknife功能
Butterknife是一個(gè)在android上實(shí)現(xiàn)ioc(控制反轉(zhuǎn))的一個(gè)庫(kù)。ioc的核心是解耦。解耦的目的是修改耦合對(duì)象時(shí)不影響另外一個(gè)對(duì)象,降低模塊之間的關(guān)聯(lián)。在Spring中ioc更多的是依靠xml的配置。而android上的IOC框架可以不使用xml配置2022-11-11Android使用 Spinner控件實(shí)現(xiàn)下拉框功能
Spinner是android的一種控件,用它我們可以實(shí)現(xiàn)下拉框。下面通過(guò)實(shí)例代碼給大家介紹Android使用 Spinner控件實(shí)現(xiàn)下拉框功能,感興趣的朋友一起看看吧2018-08-08一文深入探討Android Activity啟動(dòng)模式
在 Android 應(yīng)用開發(fā)中,Activity 是用戶界面的核心組件,而 Activity 的啟動(dòng)模式則是決定應(yīng)用界面如何在任務(wù)棧中交互、管理以及呈現(xiàn)的關(guān)鍵因素,本文將深入探討 Android 中的 Activity 啟動(dòng)模式,詳細(xì)解釋每種模式的用途、適用場(chǎng)景2023-08-08