Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 编辑文本自定义字符串格式_Android_Format_Android Edittext - Fatal编程技术网

Android 编辑文本自定义字符串格式

Android 编辑文本自定义字符串格式,android,format,android-edittext,Android,Format,Android Edittext,我搜索了每一个与我的问题相似的问题,但都没有找到答案。我的问题是: 我想在键入时在EditText中格式化字符串。格式如下(始终为19位数字): 01234501 0123456789 0 如您所见,我希望在用户键入时需要空格时添加空格。我知道我必须使用TextWatcher,但我所做的一切都没有得到我想要的 编辑: 以下是我最后一次尝试的代码: @Override public void afterTextChanged(Editable s) {

我搜索了每一个与我的问题相似的问题,但都没有找到答案。我的问题是:

我想在键入时在
EditText
中格式化字符串。格式如下(始终为19位数字):

01234501 0123456789 0


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

编辑

以下是我最后一次尝试的代码:

        @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);
            }
        }
给你

main.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>
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());
          }

             }});

    }
}
通过这种方式,我刚刚成功地在数字之间以特定的间隔添加了空格


注意:我在编辑文本中添加了额外的功能,因此只能输入数字,同时数字键盘在默认情况下只能弹出。有关用户输入类型的更多信息,请参阅,可能会对您有所帮助。

“但我所做的一切都没有得到我想要的。”我们不知道您做了什么。向我们展示你的尝试,我们可以找出你做错了什么。@dymmeh我编辑了我的问题,请看一看。我已经有了
android:inputType=“number”
。我测试了这个,效果很好。“删除空间”部分才是真正的问题。这里只有一个小问题。当用户将光标设置为非最后一个位置的随机位置时,删除零件不起作用。我会试着自己修理,但如果你能试试的话,我会更加感激你。谢谢您的时间:)。当我尝试此操作时,我得到一个堆栈溢出的PostTextChanged被一次又一次调用