如何在Android的EditText中的联系电话号码之间自动添加连字符 [英] How to put hyphen automatically between contact number in EditText in android

查看:71
本文介绍了如何在Android的EditText中的联系电话号码之间自动添加连字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在用户在运行时输入联系号之间自动添加连字符&还应该自动将其删除,

I want to add hyphen in between contact umber automatically when user enters it at runtime & also it should remove it automaticaly,

例如904-149-0646

like 904-149-0646

我正在使用此代码,

package com.cssoft.hyphen;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;

public class MainActivity extends Activity {

private EditText edit_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    edit_number=(EditText)findViewById(R.id.edit_number);
    putHyphen();
}
public void putHyphen(){
    edit_number.addTextChangedListener(new TextWatcher() {

        @Override

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

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            int len=find(Integer.parseInt(s.toString()));
            if(len==3||len==6){
                edit_number.setText(s+"-");
            }

        }
    });
}
public int find(int num) {

    int len = 0;
    while (num != 0) {
        num = num / 10;
        len++;
    }
    return len;
}
}

请尽快给我解决方案.

推荐答案

尝试遵循此代码.

@Override
public void afterTextChanged(Editable text) {
    if (isFormatting)
        return;

    isFormatting = true;

    // If deleting hyphen, also delete character before or after it
    if (deletingHyphen && hyphenStart > 0) {
        if (deletingBackward) {
            if (hyphenStart - 1 < text.length()) {
                text.delete(hyphenStart - 1, hyphenStart);
            }
        } else if (hyphenStart < text.length()) {
            text.delete(hyphenStart, hyphenStart + 1);
        }
    }
    if (text.length() == 3 || text.length() == 7) {
        text.append('-');
    }

    isFormatting = false;
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    if (isFormatting)
        return;

    // Make sure user is deleting one char, without a selection
    final int selStart = Selection.getSelectionStart(s);
    final int selEnd = Selection.getSelectionEnd(s);
    if (s.length() > 1 // Can delete another character
            && count == 1 // Deleting only one character
            && after == 0 // Deleting
            && s.charAt(start) == '-' // a hyphen
            && selStart == selEnd) { // no selection
        deletingHyphen = true;
        hyphenStart = start;
        // Check if the user is deleting forward or backward
        if (selStart == start + 1) {
            deletingBackward = true;
        } else {
            deletingBackward = false;
        }
    } else {
        deletingHyphen = false;
    }
}

这篇关于如何在Android的EditText中的联系电话号码之间自动添加连字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆