栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android EditTextView 实现带空格分隔的输入(电话号码,银行卡)

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android EditTextView 实现带空格分隔的输入(电话号码,银行卡)

电话号码输入框需求:

  • 三位,七位后有空格
  • 删除倒数第四,第八位会将空格也删除

使用TextWatcher

When an object of a type is attached to an Editable, its methods will be called when the text is changed.就是说,只要是一个可编辑的文本设置了TextWatcher,当文本发生变化时,TextWatcher里的方法将会被调用.

其实不难,看了网上搜索到的例子,思路绕了点,这边做一份自己的记录

import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;

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);
    //是否为输入状态
    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) {
  }
  
  private void setContent(StringBuffer sb) {
    editText.setText(sb.toString());
    //移动光标到最后面
    editText.setSelection(sb.length());
  }
}

总结

以上所述是小编给大家介绍的Android EditTextView 实现带空格分隔的输入(电话号码,银行卡),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/156476.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号