我想将字符限制为0-9,az,AZ和空格键.设置inputtype我可以限制为数字,但我无法弄清楚Inputfilter查看文档的方式.
我想要一个只有可见数字的键盘到EditText视图.没有任何其他角色.
我已经测试了所有可用的输入并且不起作用.我已经搜索了一种只使用数字键盘的方法,但我只看到过引用:
android: inputType = "numberPassword"
Run Code Online (Sandbox Code Playgroud)
但我想在EditText中看到可见的数字.有人可以帮帮我吗?
我想要一个这样的键盘:(numberPassword)

我尝试过:
android:digits="0123456789"
android:inputType="phone"
Run Code Online (Sandbox Code Playgroud)
和
android:inputType="number"
Run Code Online (Sandbox Code Playgroud)
看起来像那样:

我一直在限制输入到我的edittext这样的;
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String output = "";
for (int i = start; i < end; i++) {
if (source.charAt(i)!='~'&&source.charAt(i)!='/') {
output += source.charAt(i);
}
}
return output;
}
};
Run Code Online (Sandbox Code Playgroud)
但是任何使用过这种方法的人都会知道,当它与自动纠正和退格键混合时会导致重复的字符.为了解决这个问题,我从键盘上取下了自动校正条,就像这样;
Edittect.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
Run Code Online (Sandbox Code Playgroud)
现在这在股票安卓键盘上工作正常,但问题是在替代键盘上(来自谷歌播放)它不会禁用自动更正,因此我遇到了重复字符的问题.有没有人遇到这个/知道如何解决它?
请有人可以向我解释source和dest参数的用途android.text.InputFilter#filter吗?
我试着阅读文档,但我真的很困惑.我正在尝试使用正则表达式来制作IP掩码.任何帮助表示赞赏.
我现在明白了.所以,例如,如果我有123.42,那么用户输入123.42d,我会:
dest = 123.42
source = 123.42d
start = 5
end = 6
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter()
{
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
{
String destTxt = dest.toString();
String resultingTxt = destTxt.substring(0, dstart) + source.subSequence(start, end) + destTxt.substring(dend);
if(resultingTxt.equals("")) return "";
int lastChar = resultingTxt.length() -1;
if(String.valueOf(resultingTxt.charAt(lastChar)).matches("[^0-9.]"))
{
return "";
}
return null;
}
};
Run Code Online (Sandbox Code Playgroud)
这不行.这不应该只返回数字吗?它会发生,取决于用户类型,它也会返回字符.