我对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
}
});
完美地删除了点,但现在的问题是指针向后移动并再次从头开始。
我的问题怎么能让指针走到前面?而不是开始 试。
答案 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是错误的。
查看官方说明:
也看到类似的问题 android how to set the EditText Cursor to the end of its text
代码中的建议:
使用 replaceAll 删除点
str= str.replaceAll("\\.", "");
}