android 手机号分段_Android EditText输入手机号自带分隔符

74b45215d864

图片发自简书App

输入手机号时,为了看着更加方便可能会显示成xxx xxxx xxxx,如图

74b45215d864

为了这个需求,自己简单的研究了一下,写了个这个小东西自己练练思维

简单来看就是按照3-4-4来分割,通过添加addTextChangedListener()就能获得文本修改的值,可以在afterTextChanged(Editable s)方法中处理就行了,主要就是在对应的位置添加分隔符就OK了

private StringBuffer mStringBuffer = new StringBuffer();

/** 分割符 */

private char separator = ' ';

/** 分割符插入位置规则 */

private int[] RULES = {3, 4, 4};

@Override

public void afterTextChanged(Editable s) {

if (!TextUtils.equals(s, mStringBuffer)) {

mStringBuffer = new StringBuffer();

for (int i = 0, length = s.length(); i < length; i++) {

char c = s.charAt(i);

if (c != separator) {

mStringBuffer.append(c);

}

int standardPos = 0;

int offset = 0;

for (int pos : RULES) {

standardPos += pos + offset++;

if (mStringBuffer.length() == standardPos) {

mStringBuffer.append(separator);

break;

}

}

}

editText.setText(mStringBuffer);

}

}

这些代码基本已经实现了主要功能,但是还有不少小问题,例如:

光标的位置问题

空格删除问题

……

后续再处理这些问题的过程中进行了一些优化,还扩展了一些使用方式,最终是以实现TextWatcher的方式来封装的,不说废话,上代码

public class AutoSeparateTextWatcher implements TextWatcher {

/***/

private StringBuffer mStringBuffer = new StringBuffer();

/** 分割符 */

private char separator = ' ';

/** 分割符插入位置规则 */</

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下代码实现页面跳转、手机输入、修改和确认功能: // 在当前页面中获取手机输入EditText phoneEditText = findViewById(R.id.phone_edit_text); // 获取用户输入手机号 String phoneNumber = phoneEditText.getText().toString(); // 创建一个 Intent 对象,用于跳转到下一个页面 Intent intent = new Intent(this, NextActivity.class); // 将手机号作为参数传递给下一个页面 intent.putExtra("phone_number", phoneNumber); // 启动下一个页面 startActivity(intent); // 在下一个页面中获取传递过来的手机号 String phoneNumber = getIntent().getStringExtra("phone_number"); // 在当前页面中获取手机输入EditText phoneEditText = findViewById(R.id.phone_edit_text); // 将传递过来的手机号显示在输入框中 phoneEditText.setText(phoneNumber); // 用户修改手机号后,点击确认按钮 Button confirmButton = findViewById(R.id.confirm_button); confirmButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 获取用户修改后的手机号 String newPhoneNumber = phoneEditText.getText().toString(); // 创建一个 Intent 对象,用于返回上一个页面 Intent intent = new Intent(); intent.putExtra("new_phone_number", newPhoneNumber); // 设置返回结果为 RESULT_OK,并传递 Intent 对象 setResult(RESULT_OK, intent); // 关闭当前页面 finish(); } }); // 在上一个页面中获取返回的新手机号 @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { // 获取返回的新手机号 String newPhoneNumber = data.getStringExtra("new_phone_number"); // 更新界面上显示的手机号 phoneTextView.setText(newPhoneNumber); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值