删除EditText中的一个点

时间:2014-12-11 09:17:36

标签: android android-edittext

我对android不太熟悉请帮忙。我的问题是我要删除EditText内的一个点。在我的活动中,我有一个EditText,其设置为numberDecimal的inputType。现在,当我将其更改为number键盘中的点消失但在更高的android pf版本中它会出现。顺便说一句,我使用Android版本2.3.6。

  

我在这里做的是将inputType设置为十进制并捕获小数   每当用户输入它时指向。

这是我的代码:

myEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            String str = s.toString();

            if(s.length() > 0 && s.toString().charAt(s.length() - 1) == '.')
            {
                     showMessage("Decimal numbers is not allowed");
                     CharSequence text = s.subSequence(0, s.length()-1);
                     myEditText.setText(text);
            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

完美地删除了点,但现在的问题是指针向后移动并再次从头开始。

  

我的问题怎么能让指针走到前面?而不是开始   试。

1 个答案:

答案 0 :(得分:1)

将光标设置为文本结尾

myEditText.setSelection(text.length()); //as you are getting value for text

我建议你把代码放到"。"在 afterTextChanged()方法下。因为官方文件说:

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

调用此方法通知您,在s中,从start开始的计数字符刚刚替换了之前具有长度的旧文本。 尝试从此回调更改s是错误的。

查看官方说明:

http://developer.android.com/reference/android/text/TextWatcher.html#afterTextChanged%28android.text.Editable%29

也看到类似的问题 android how to set the EditText Cursor to the end of its text

代码中的建议:

使用 replaceAll 删除点

str= str.replaceAll("\\.", "");
            }