android格式的edittext,每4个字符后显示空格

use*_*164 12 android android-edittext

Android - 我想从用户输入一个数字输入到EditText - 它需要用空格分隔 - 每4个字符.示例:123456781234 - > 1234 5678 1234

这仅用于视觉目的.但是我需要没有空格的字符串以供进一步使用.

我能做到这一点最简单的方法是什么?

Val*_*tin 17

有一种更简单的方法可以实现此目的:

editText.doAfterTextChanged { text ->
    val formattedText = text.toString().replace(" ", "").chunked(4).joinToString(" ")

    if (formattedText != text.toString()) {
        editText.setText(formattedText)
        editText.setSelection(editText.length())
    }
}
Run Code Online (Sandbox Code Playgroud)

当你想要获取没有空格的文本时,只需执行以下操作:

editText.text.toString().replace(" ","")
Run Code Online (Sandbox Code Playgroud)


小智 10

这是信用卡的editext?
首先创建计数变量

int count = 0;
Run Code Online (Sandbox Code Playgroud)

然后把它放在你的oncreate(活动)/ onviewcreated(片段)

    ccEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (count <= ccEditText.getText().toString().length()
                    &&(ccEditText.getText().toString().length()==4
                    ||ccEditText.getText().toString().length()==9
                        ||ccEditText.getText().toString().length()==14)){
                ccEditText.setText(ccEditText.getText().toString()+" ");
                int pos = ccEditText.getText().length();
                ccEditText.setSelection(pos);
            }else if (count >= ccEditText.getText().toString().length()
                    &&(ccEditText.getText().toString().length()==4
                    ||ccEditText.getText().toString().length()==9
                    ||ccEditText.getText().toString().length()==14)){
                ccEditText.setText(ccEditText.getText().toString().substring(0,ccEditText.getText().toString().length()-1));
                int pos = ccEditText.getText().length();
                ccEditText.setSelection(pos);
            }
            count = ccEditText.getText().toString().length();
        }
    });
Run Code Online (Sandbox Code Playgroud)


Foa*_*Guy 7

正如@waqas指出的,如果您的目标是在用户键入数字时实现此目的,则需要使用TextWatcher。这是实现空间的一种潜在方法:

StringBuilder s;
s = new StringBuilder(yourTxtView.getText().toString());

for(int i = 4; i < s.length(); i += 5){
    s.insert(i, " ");
}
yourTxtView.setText(s.toString());
Run Code Online (Sandbox Code Playgroud)

每当需要获取不带空格的字符串时,请执行以下操作:

String str = yourTxtView.getText().toString().replace(" ", "");
Run Code Online (Sandbox Code Playgroud)


waq*_*lam 5

您需要使用TextWatcher来实现视觉目的空间。

并使用任何按空格逻辑简单分割的字符串将其连接回来或按字符循环遍历整个字符串并(char) 32从字符串中删除