android 分割线银行卡号码显示的时候怎么4位分割

4855人阅读
Android(5)
&/pre&&pre name=&code& class=&java&&et_input = (EditText) this.findViewById(R.id.et_input);
et_input.addTextChangedListener(new TextWatcher() {
int beforeTextLength = 0;
int onTextLength = 0;
boolean isChanged =
int location = 0;// 记录光标的位置
private char[] tempC
private StringBuffer buffer = new StringBuffer();
int konggeNumberB = 0;
public void onTextChanged(CharSequence s, int start, int before, int count) {
onTextLength = s.length();
buffer.append(s.toString());
if (onTextLength == beforeTextLength || onTextLength &= 3 || isChanged) {
isChanged =
isChanged =
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
beforeTextLength = s.length();
if (buffer.length() & 0) {
buffer.delete(0, buffer.length());
konggeNumberB = 0;
for (int i = 0; i & s.length(); i++) {
if (s.charAt(i) == ' ') {
konggeNumberB++;
public void afterTextChanged(Editable s) {
if (isChanged) {
location = et_input.getSelectionEnd();
int index = 0;
while (index & buffer.length()) {
if (buffer.charAt(index) == ' ') {
buffer.deleteCharAt(index);
index = 0;
int konggeNumberC = 0;
while (index & buffer.length()) {
// if (index % 5 == 4) {
buffer.insert(index, ' ');
konggeNumberC++;
if (index == 4 || index == 9 || index == 14 || index == 19) {
buffer.insert(index, ' ');
konggeNumberC++;
if (konggeNumberC & konggeNumberB) {
location += (konggeNumberC - konggeNumberB);
tempChar = new char[buffer.length()];
buffer.getChars(0, buffer.length(), tempChar, 0);
String str = buffer.toString();
if (location & str.length()) {
location = str.length();
} else if (location & 0) {
location = 0;
et_input.setText(str);
Editable etable = et_input.getText();
Selection.setSelection(etable, location);
isChanged =
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:123590次
积分:1571
积分:1571
排名:第19586名
原创:38篇
评论:24条
(1)(1)(1)(1)(9)(1)(4)(2)(2)(3)(2)(7)(11)(1)&&&&输入银行卡卡号时,每4位添加空格
&输入银行卡卡号时,每4位添加空格
通过对edittext的输入进行监听,实现类似银行卡卡号输入的效果,没4位添加空格,只能输入数字
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
移动开发下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
输入银行卡卡号时,每4位添加空格
所需积分:0
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
输入银行卡卡号时,每4位添加空格
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员Android(5)
et_input = (EditText) this.findViewById(R.id.et_input);
et_input.addTextChangedListener(new TextWatcher() {
int beforeTextLength = 0;
int onTextLength = 0;
boolean isChanged = false;
int location = 0;
private char[] tempC
private StringBuffer buffer = new StringBuffer();
int konggeNumberB = 0;
public void onTextChanged(CharSequence s, int start, int before, int count) {
onTextLength = s.length();
buffer.append(s.toString());
if (onTextLength == beforeTextLength || onTextLength &= 3 || isChanged) {
isChanged = false;
isChanged = true;
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
beforeTextLength = s.length();
if (buffer.length() & 0) {
buffer.delete(0, buffer.length());
konggeNumberB = 0;
for (int i = 0; i & s.length(); i++) {
if (s.charAt(i) == ' ') {
konggeNumberB++;
public void afterTextChanged(Editable s) {
if (isChanged) {
location = et_input.getSelectionEnd();
int index = 0;
while (index & buffer.length()) {
if (buffer.charAt(index) == ' ') {
buffer.deleteCharAt(index);
index = 0;
int konggeNumberC = 0;
while (index & buffer.length()) {
if (index == 4 || index == 9 || index == 14 || index == 19) {
buffer.insert(index, ' ');
konggeNumberC++;
if (konggeNumberC & konggeNumberB) {
location += (konggeNumberC - konggeNumberB);
tempChar = new char[buffer.length()];
buffer.getChars(0, buffer.length(), tempChar, 0);
String str = buffer.toString();
if (location & str.length()) {
location = str.length();
} else if (location & 0) {
location = 0;
et_input.setText(str);
Editable etable = et_input.getText();
Selection.setSelection(etable, location);
isChanged = false;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:123593次
积分:1571
积分:1571
排名:第19586名
原创:38篇
评论:24条
(1)(1)(1)(1)(9)(1)(4)(2)(2)(3)(2)(7)(11)(1)android edittext在输入手机号码的时候自动添加分隔符 - 开源中国社区
当前访客身份:游客 [
当前位置:
在输入框输入手机号码,例如,变成3-4-4的格式
当输入138后面的0的时候,自动添加一个&-&,变成138-0的格式; 当输入到138-0013后面的8的时候,自动变成138-的格式。
哪位高手有过类似的经验或者知道怎么好实现的话,能指导一下我,不甚感激。
共有1个答案
<span class="a_vote_num" id="a_vote_num_
自定义一个edittext,我这个是自动加空格的,改下就行了,xml中引用此空间,activity使用时需要设置mEdi
public class TelEdittext extends EditText{
public boolean isT
private String addString=" ";
private boolean isRun=
public TelEdittext(Context context) {
this(context,null);
public TelEdittext(Context context, AttributeSet attrs) {
super(context, attrs);
private void init() {
addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("tag", "onTextChanged()之前");
if(isRun){//这几句要加,不然每输入一个值都会执行两次onTextChanged(),导致堆栈溢出,原因不明
Log.i("tag", "onTextChanged()");
if (isTel) {
String finalString="";
int index=0;
String telString=s.toString().replace(" ", "");
if ((index+3)&telString.length()) {
finalString+=(telString.substring(index, index+3)+addString);
while ((index+4)&telString.length()) {
finalString+=(telString.substring(index, index+4)+addString);
finalString+=telString.substring(index,telString.length());
TelEdittext.this.setText(finalString);
//此语句不可少,否则输入的光标会出现在最左边,不会随输入的值往右移动
TelEdittext.this.setSelection(finalString.length());
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
public void afterTextChanged(Editable s) {
更多开发者职位上
有什么技术问题吗?
Xushao...的其它问题
类似的话题

我要回帖

更多关于 android 斜线分割 的文章

 

随机推荐