我在布局xml
中有这个android:digits="0123456789."
android:inputType="phone" />
我想要的是能够以编程方式更改它并能够来回更改它。 inputType部分可以正常使用
manual_ip.setInputType(InputType.TYPE_CLASS_TEXT);
或
manual_ip.setInputType(InputType.TYPE_CLASS_PHONE);
但我对数字部分一无所知.. 我需要将字符限制为“0123456789”。或根据复选框状态允许所有内容。
答案 0 :(得分:7)
添加
manual_ip.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
后
manual_ip.setInputType(InputType.TYPE_CLASS_PHONE);
之后没有任何内容
manual_ip.setInputType(InputType.TYPE_CLASS_TEXT);
解决了我的问题!
答案 1 :(得分:1)
尝试使用InputFilter:
InputFilter[] digitsfilters = new InputFilter[1];
digitsfilters[0] = new InputFilter(){
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
// TODO Auto-generated method stub
if (end > start) {
char[] acceptedChars = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
for (int index = start; index < end; index++) {
if (!new String(acceptedChars).contains(String.valueOf(source.charAt(index)))) {
return "";
}
}
}
return null;
}
};
manual_ip= (EditText)findViewById(R.id.manual_ip);
manual_ip.setFilters(digitsfilters);
答案 2 :(得分:0)
写下这个。
myEditText.setFilters( new InputFilter[] {
new PasswordCharFilter(), new InputFilter.LengthFilter(20)});
OR
TextView editEntryVew = new TextView(...);
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(8);
editEntryView.setFilters(FilterArray);