欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android EditTextView 實現(xiàn)帶空格分隔的輸入(電話號碼,銀行卡)

 更新時間:2018年02月01日 11:20:13   作者:Ryhume  
這篇文章主要介紹了Android EditTextView 實現(xiàn)帶空格分隔的輸入(電話號碼,銀行卡)的相關(guān)資料,需要的朋友可以參考下

電話號碼輸入框需求:

  • 三位,七位后有空格
  • 刪除倒數(shù)第四,第八位會將空格也刪除

使用TextWatcher

When an object of a type is attached to an Editable, its methods will be called when the text is changed.就是說,只要是一個可編輯的文本設(shè)置了TextWatcher,當文本發(fā)生變化時,TextWatcher里的方法將會被調(diào)用.

其實不難,看了網(wǎng)上搜索到的例子,思路繞了點,這邊做一份自己的記錄

import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
/**
 * @desc
 * @autor Xemenes
 * @time 2017/5/12 10:18
 */
public class PhoneNumberTextWatcher implements TextWatcher {
  EditText editText;
  int lastContentLength = 0;
  boolean isDelete = false;
  public PhoneNumberTextWatcher(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) {
  }
  /**
   * 添加或刪除空格EditText的設(shè)置
   *
   * @param sb
   */
  private void setContent(StringBuffer sb) {
    editText.setText(sb.toString());
    //移動光標到最后面
    editText.setSelection(sb.length());
  }
}

總結(jié)

以上所述是小編給大家介紹的Android EditTextView 實現(xiàn)帶空格分隔的輸入(電話號碼,銀行卡),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論