1

我需要一个编辑文本验证,它只允许数字 symbol.and 长度不应超过 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);
4

4 回答 4

1

使用android:digits属性过滤符号:

<EditText
    android:digits="0123456789:"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" /> 

或以编程方式:

 editText.setKeyListener(DigitsKeyListener.getInstance("0123456789:"));
于 2014-09-21T07:55:53.403 回答
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 });

并限制edittext使用的xml中的长度

android:maxLength="5"
于 2013-05-26T12:50:18.413 回答
1

试试这个,它以编程方式设置 EditText 允许的数字以进行验证,可以提到字母/数字/符号,其中用户只能输入这些字符

timeVisited.setKeyListener(DigitsKeyListener.getInstance("0123456789:"));

对于通过代码设置最大长度,

int maxLength = 5;
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(maxLength);
timeVisited.setFilters(FilterArray);

让我知道这是否有效。

于 2013-05-26T12:56:18.880 回答
0

你为什么用它EditText来获得时间,用它TimePicker来代替。

于 2013-05-26T12:53:51.083 回答