EditText праверка, якая дазволіць толькі лік і «:» сімвал

Мне патрэбен тэкст праверкі рэдагавання, які толькі дазволіць <�моцны> лік і <�моцны>: Даўжыня symbol.and не павiнна быць больш за 5 char.And найбольш Я ствараю гэты 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);
1

6 адказы

выкарыстоўваць 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 выкарыстання EditText

android:maxLength="5"
1
дададзена
Гэта сведчыць <�б> Тып новы InputFilter() {} павінен рэалізаваць успадкаваны абстрактны метад InputFilter.filter (CharSequence, Int, Int, Складовай, Int, Int) у InputFilter фільтры = новы InputFilter() {
дададзена аўтар Anirban, крыніца
можа быць, вы выкарыстоўваеце гэта ў няправільным месцы .. выкарыстоўвайце код у OnCreate для тэставання.
дададзена аўтар stinepike, крыніца

выкарыстоўваць 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 выкарыстання EditText

android:maxLength="5"
1
дададзена
Гэта сведчыць <�б> Тып новы InputFilter() {} павінен рэалізаваць успадкаваны абстрактны метад InputFilter.filter (CharSequence, Int, Int, Складовай, Int, Int) у InputFilter фільтры = новы InputFilter() {
дададзена аўтар Anirban, крыніца
можа быць, вы выкарыстоўваеце гэта ў няправільным месцы .. выкарыстоўвайце код у OnCreate для тэставання.
дададзена аўтар stinepike, крыніца

выкарыстоўваць 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 выкарыстання EditText

android:maxLength="5"
1
дададзена
Гэта сведчыць <�б> Тып новы InputFilter() {} павінен рэалізаваць успадкаваны абстрактны метад InputFilter.filter (CharSequence, Int, Int, Складовай, Int, Int) у InputFilter фільтры = новы InputFilter() {
дададзена аўтар Anirban, крыніца
можа быць, вы выкарыстоўваеце гэта ў няправільным месцы .. выкарыстоўвайце код у OnCreate для тэставання.
дададзена аўтар stinepike, крыніца

Паспрабуйце гэта, праграмна ўсталёўвае лічбы дазволеных для EditText для мэт праверкі, алфавіты/лічбы/сімвалы могуць быць згаданыя, у якім карыстальнік можа ўводзіць толькі тыя сімвалы,

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

Для ўстаноўкі MaxLength з дапамогай кода,

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

Дайце мне ведаць, калі гэта працуе.

1
дададзена
Гэта адкрыццё лічбавай клавіятуры, якія не маюць знака
дададзена аўтар Anirban, крыніца
Але 5 голец праверка працавала.
дададзена аўтар Anirban, крыніца

Выкарыстоўвайце Android: лічбы атрыбут для фільтрацыі знакаў:

 

ці праграмна:

 editText.setKeyListener(DigitsKeyListener.getInstance("0123456789:"));
1
дададзена

Чаму вы карыстаецеся EditText для атрымання часу, выкарыстоўвайце TimePicker замест гэтага.

0
дададзена