我需要一个编辑文本验证,它只允许数字和:符号。长度不应超过5个字符。而且大多数我都是实际创建此edittext
final EditText timeVisited = new EditText(this);
timeVisited.setId(20);
timeVisited.setText(Tm);
timeVisited.setTextColor(Color.BLACK);
timeVisited.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
timeVisited.setHint("eg. 14:30");
timeVisited.setPadding(5,5,5,5);
timeVisited.setSingleLine(false);
timeVisited.setLines(1);
timeVisited.setBackgroundResource(R.drawable.text_bg);
customerToCatchTblRow.addView(timeVisited);// add the column to the table row here
LinearLayout.LayoutParams params5 = (LinearLayout.LayoutParams)timeVisited.getLayoutParams();
params5.setMargins(0, 0, 5, 0); //substitute parameters for left, top, right, bottom
timeVisited.setLayoutParams(params5);
答案 0 :(得分:1)
使用InputFilter。代码可以是这样的
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (!Character.isDigit(source.charAt(i))
&& source.charAt(i) != ':') {
return "";
}
}
return null;
}
};
timeVisited.setFilters(new InputFilter[] { filter });
并限制使用
的xml of edittext中的长度android:maxLength="5"
答案 1 :(得分:1)
试试这个,它以编程方式设置EditText允许的数字以进行验证,可以提到字母/数字/符号,用户只能输入那些字符
timeVisited.setKeyListener(DigitsKeyListener.getInstance("0123456789:"));
通过代码设置maxlength,
int maxLength = 5;
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(maxLength);
timeVisited.setFilters(FilterArray);
如果有效,请告诉我。
答案 2 :(得分:1)
使用android:digits
属性过滤符号:
<EditText
android:digits="0123456789:"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
或以编程方式:
editText.setKeyListener(DigitsKeyListener.getInstance("0123456789:"));
答案 3 :(得分:0)
为什么使用EditText
来获取时间,请改用TimePicker
。