EditText 自定义字符串格式

EditText custom string formatting(EditText 自定义字符串格式)

本文介绍了EditText 自定义字符串格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我搜索了与我的问题类似的每个问题,但没有得到解决.我的问题是这样的:

I searched every question similar to my problem but didn't get it working. My problem is this:

我想在输入时格式化 EditText 中的字符串.格式如下(始终是 19 位数字):

I want to format a string in EditText while typing. The format is this (it's always a 19 digit number):

012345 01 0123456789 0

如您所见,我想在用户输入时添加空格.我知道我必须使用 TextWatcher 但我所做的一切都没有得到我想要的.

As you can see I want to add spaces when they are needed while the user is typing. I know that I have to use the TextWatcher but everything I do I don't get what i want.

编辑:

这是我上次尝试的代码:

Here is the code of my last try:

        @Override
        public void afterTextChanged(Editable s) {
           if(s.length() == 7 || s.length() == 10 || s.length() == 21){
                editText.removeTextChangedListener(this);
                String newValue;
                newValue= s.insert((s.length()-1), " ").toString();
                //Log.d("AFTER",newValue);
                editText.setText(newValue);
                editText.setSelection(newValue.length());
                editText.addTextChangedListener(this);
            }
        }

推荐答案

给你.

ma​​in.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<EditText 
    android:id="@+id/editText"   
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:digits="0123456789"
    android:inputType="number" />
</LinearLayout>

MainActivity.java:

public class MainActivity extends Activity {

    int textlength = 0;
     EditText editText;

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


         editText = (EditText)findViewById(R.id.editText);

            editText.addTextChangedListener(new TextWatcher()
            {

             public void afterTextChanged(Editable s)
             {

             }

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

             }

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


              String text = editText.getText().toString();
          textlength = editText.getText().length();

          if(text.endsWith(" "))          
              return;

          if(textlength == 7 || textlength == 10 || textlength == 21)
          {
            editText.setText(new StringBuilder(text).insert(text.length()-1, " ").toString());
              editText.setSelection(editText.getText().length());
          }

             }});

    }
}

通过这种方式,我只是设法在特定间隔的数字之间添加空格.

In this way, I have just managed to add spaces between the digits at particular intervals.

注意:我在edittext中添加了额外的功能,这样就只能输入数字,同时默认只会弹出数字键盘.有关用户输入类型的更多信息,this 可能会对你有所帮助.

Note: I have added extra features to the edittext, so that only numbers can be entered and at the same time the number keyboard only pops up by default. For more on the way for the type of user inputs, this might help you.

这篇关于EditText 自定义字符串格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:EditText 自定义字符串格式

基础教程推荐