所以我不想有一个 editText 会自动做一些事情。
第一件事是它应该只允许插入数字。
第二个也是我认为更难的想法是,当用户插入例如 5 个数字时会添加一些符号。例如我写:
12345
然后程序应该添加一个标志
12345-
现在我可以输入更多了。
12345-6789
我正在用谷歌搜索 EditText 中的预定义文本,但我发现没有任何用处......
所以我不想有一个 editText 会自动做一些事情。
第一件事是它应该只允许插入数字。
第二个也是我认为更难的想法是,当用户插入例如 5 个数字时会添加一些符号。例如我写:
12345
然后程序应该添加一个标志
12345-
现在我可以输入更多了。
12345-6789
我正在用谷歌搜索 EditText 中的预定义文本,但我发现没有任何用处......
对于 1) 添加 android:inputType="number"
xml
对于 2)您可以有两个不同的编辑文本,由-和
xml分隔,android:maxLength="5"
然后加入值
虽然我确信必须有一些更好的方法来做(2)
所以我找到了菲利普评论的解决方案。你必须使用过滤器这样做。我的代码现在是这样的:
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if(end==0){
if(is_minus){jis_minus=false;}
else number--;
}
for (int i = start; i < end; i++) {
if (!Character.isDigit(source.charAt(i))) {
return "";
}
else{
number++;
}
if(number==5)
{
is_minus=true;
return (source.charAt(i)+"-");
}
}
return null;
}
};
之后,您只需将过滤器附加到您想要的文本框...
2)你不能检查onKeyDown (int keyCode, KeyEvent event)
吗?
因此,当用户按下按钮时,您可以使用此函数来计算编辑文本的长度,如果长度等于 5,则插入所需的字符。
请注意,当您将其定义为仅数字时,我没有尝试在编辑文本中插入“-”符号。