Android實現(xiàn) EditText輸入手機(jī)號空格功能
Android EditText輸入手機(jī)號空格
- 開發(fā)需求是在登錄頁面的手機(jī)EditText中間插入空格,讓用戶看起來方便點, 130 1234 4567,中間第4個數(shù)字和第5個數(shù)字空格前面加空格。
- 要求還有一點,就是除了輸入要加入空格,從其他地方復(fù)制過來的電話號碼,沒有空格的,也要在粘貼后,自動補(bǔ)全空格。
- 思路:重寫TextWatcher,每次EditText內(nèi)容變化,都判斷內(nèi)容是否符合要求。
@Override
public void afterTextChanged(Editable s)
{
//需求是130 1234 4567,中間第4個數(shù)字和第5個數(shù)字空格前面加空格
StringBuffer sb = new StringBuffer(s);
//StringBuffer.length()是長度,所以下標(biāo)從1開始
//字符數(shù)組第4位如果不是空格字符,就在他前面插一個空格字符
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();
//因為第4位加了一個空格,所以第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);
}
});
完整代碼,里面有一個別人的方法,就這方法是粘貼時,空格不自動補(bǔ)全:
http://www.dbjr.com.cn/article/134183.htm
/**
* Created by solexit04 on 2017/9/4.
* 手機(jī)號中間插入空格
*/
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位,這時需要插入空格
if (!isDelete && (s.length() == 4 || s.length() == 9))
{
if (s.length() == 4)
{
sb.insert(3, " ");
} else
{
sb.insert(8, " ");
}
setContent(sb);
}
//刪除的位置到4,9時,剔除空格
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個數(shù)字和第5個數(shù)字空格前面加空格
StringBuffer sb = new StringBuffer(s);
//StringBuffer.length()是長度,所以下標(biāo)從1開始
//字符數(shù)組第4位如果不是空格字符,就在他前面插一個空格字符
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();
//因為第4位加了一個空格,所以第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());
//移動光標(biāo)到最后面
editText.setSelection(sb.length());
}
}
總結(jié)
以上所述是小編給大家介紹的Android實現(xiàn) EditText輸入手機(jī)號空格功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Android實現(xiàn)recyclerview城市字母索引列表
大家好,本篇文章主要講的是Android實現(xiàn)recyclerview城市字母索引列表,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
Flutter系統(tǒng)網(wǎng)絡(luò)圖片加載流程解析
這篇文章主要介紹了Flutter系統(tǒng)網(wǎng)絡(luò)圖片加載流程,從構(gòu)造函數(shù)開始說起,我們以最簡單的調(diào)用方式舉例,當(dāng)我們使用Image.network(imageUrl)這種方式來顯示圖片時,Image組件內(nèi)部image屬性就會被賦值NetworkImage,具體操作步驟跟隨小編一起看看吧2022-05-05
Android編程單選項框RadioGroup綜合應(yīng)用示例
這篇文章主要介紹了Android編程單選項框RadioGroup用法,結(jié)合實例形式分析了Android單選按鈕組RadioGroup的定義與具體使用技巧,需要的朋友可以參考下2016-10-10
Android用注解與反射實現(xiàn)Butterknife功能
Butterknife是一個在android上實現(xiàn)ioc(控制反轉(zhuǎn))的一個庫。ioc的核心是解耦。解耦的目的是修改耦合對象時不影響另外一個對象,降低模塊之間的關(guān)聯(lián)。在Spring中ioc更多的是依靠xml的配置。而android上的IOC框架可以不使用xml配置2022-11-11
Android使用 Spinner控件實現(xiàn)下拉框功能
Spinner是android的一種控件,用它我們可以實現(xiàn)下拉框。下面通過實例代碼給大家介紹Android使用 Spinner控件實現(xiàn)下拉框功能,感興趣的朋友一起看看吧2018-08-08

