在 EditText 輸入中追加空格

精髓一句:

在增加字符的時(shí)候国裳,輸入數(shù)字:count == 1,輸入英文字符鞠苟,count會(huì)等于23456....取決于單詞的長(zhǎng)度鬓照。所以熔酷,只要把判定條件改為:count != 0, 即可。

今天遇到的需求豺裆,也沒問旁邊的前輩拒秘,擼起袖子就開搞了。

每輸入4位數(shù)字自動(dòng)做空格處理,限定輸入框長(zhǎng)度16位躺酒,不包括空格押蚤。

看到這個(gè)需求,想法都是很簡(jiǎn)單的羹应,在TextWatcher中做監(jiān)聽就行了揽碘。不管是直接讓Activity實(shí)現(xiàn)TextWatcher接口也好,還是直接給EditText加上AddTextChangeListener然后new也好量愧。

接著開始搜索一下钾菊,搜索到這么一篇東西:EditText輸入手機(jī)號(hào)自動(dòng)帶空格。他在代碼中很簡(jiǎn)單暴力的就開始使用了一個(gè)StringBuilder對(duì)象偎肃,來實(shí)現(xiàn)追加功能煞烫。

這樣做明顯是不妥的,即使Java有自動(dòng)GC機(jī)制累颂,但是也架不住EditText中的字符每改變一次就new一個(gè)對(duì)象爸拖辍!

然后看了這一篇:[原創(chuàng)]Android實(shí)現(xiàn)輸入手機(jī)號(hào)時(shí)自動(dòng)添加空格

在這篇博文中的代碼相對(duì)靠譜紊馏。


public void onTextChanged(CharSequence s, int start, int before, int count) {
    DLog.d("----------onTextChanged----------\n");
    DLog.d("s:" + s + "\n");
    DLog.d("start:" + start + "\n");
    DLog.d("before:" + before + "\n");
    DLog.d("count:" + count + "\n");

    if (count == 1){
        int length = s.toString().length();
        if (length == 3 || length == 8){
            editText.setText(s + " ");
            editText.setSelection(editText.getText().toString().length());
        }
    }
}

修改之后料饥,旁邊的前輩說他之前也寫過這個(gè)。不過最后因?yàn)楣鈽?biāo)會(huì)跳朱监,而且還沒有解決岸啡。

原代碼我已經(jīng)刪了,這里就不貼出來了赫编。

然后我開始去看他寫的巡蘸,并將我寫的加入到之前的代碼之中。

這個(gè)時(shí)候發(fā)現(xiàn)了一個(gè)BUG:在原生模擬器之中擂送,輸入法會(huì)自動(dòng)將輸入的英文字符拼接成為一個(gè)單詞悦荒,這個(gè)時(shí)候,這個(gè)方法會(huì)失效嘹吨。

接著我開始Debug搬味,最后發(fā)現(xiàn)。在增加字符的時(shí)候蟀拷,輸入數(shù)字:count == 1, 輸入英文字符碰纬,count 會(huì)等于23456....取決于單詞的長(zhǎng)度。

所以问芬,只要把判定條件改為:count != 0, 即可嘀趟。

我的最終源碼:

@Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

        if (count != 0) {
            int length = s.length() + 1;
            if (length % 5 == 0 && length < 20) {
                edx.setText(s + " ");
                edx.setSelection(length);
            }
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市愈诚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖炕柔,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酌泰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡匕累,警方通過查閱死者的電腦和手機(jī)陵刹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來欢嘿,“玉大人衰琐,你說我怎么就攤上這事×侗模” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)滞时。 經(jīng)常有香客問我驰怎,道長(zhǎng),這世上最難降的妖魔是什么虑省? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任匿刮,我火速辦了婚禮,結(jié)果婚禮上探颈,老公的妹妹穿的比我還像新娘熟丸。我一直安慰自己,他們只是感情好伪节,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布光羞。 她就那樣靜靜地躺著,像睡著了一般架馋。 火紅的嫁衣襯著肌膚如雪狞山。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天叉寂,我揣著相機(jī)與錄音萍启,去河邊找鬼。 笑死屏鳍,一個(gè)胖子當(dāng)著我的面吹牛勘纯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钓瞭,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼驳遵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了山涡?” 一聲冷哼從身側(cè)響起堤结,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤唆迁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后竞穷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唐责,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年瘾带,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鼠哥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡看政,死狀恐怖朴恳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情允蚣,我是刑警寧澤于颖,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站厉萝,受9級(jí)特大地震影響恍飘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谴垫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一章母、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧翩剪,春花似錦乳怎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恕出,卻和暖如春询枚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浙巫。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工金蜀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人的畴。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓渊抄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親丧裁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子护桦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容