Как в EditText сделать UI как в WhatSapp или в HH.ru

439
11 апреля 2017, 08:51

Я имею ввиду EditText куда вводиться цифры пароля от смс.

Чтобы было как на картинке в виде черточек - .

А когда вводишь они заполняются цифрами....

ОШИБКА

FATAL EXCEPTION: main
                                                                      Process: com.eranewgames.medicina, PID: 10935
                                                                      java.lang.StackOverflowError
                                                                          at android.view.ViewGroup.addFocusables(ViewGroup.java:914)
                                                                          at android.view.ViewGroup.addFocusables(ViewGroup.java:914)
                                                                          at android.view.ViewGroup.addFocusables(ViewGroup.java:914)
                                                                          at android.view.ViewGroup.addFocusables(ViewGroup.java:914)
                                                                          at android.view.View.addFocusables(View.java:6711)
                                                                          at android.view.FocusFinder.findNextFocus(FocusFinder.java:92)
                                                                          at android.view.FocusFinder.findNextFocus(FocusFinder.java:65)
                                                                          at android.view.ViewGroup.focusSearch(ViewGroup.java:681)
                                                                          at android.view.ViewGroup.focusSearch(ViewGroup.java:683)
                                                                          at android.view.ViewGroup.focusSearch(ViewGroup.java:683)
                                                                          at android.view.ViewGroup.focusSearch(ViewGroup.java:683)
                                                                          at android.view.ViewGroup.focusSearch(ViewGroup.java:683)
                                                                          at android.view.ViewGroup.focusSearch(ViewGroup.java:683)
                                                                          at android.view.ViewGroup.focusSearch(ViewGroup.java:683)
                                                                          at android.view.View.focusSearch(View.java:6617)
                                                                          at android.widget.TextView.onCreateInputConnection(TextView.java:5717)
                                                                          at android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:1121)
                                                                          at android.view.inputmethod.InputMethodManager.restartInput(InputMethodManager.java:1071)
                                                                          at android.widget.TextView.setText(TextView.java:3733)
                                                                          at android.widget.TextView.setText(TextView.java:3671)
                                                                          at android.widget.EditText.setText(EditText.java:80)
                                                                          at android.widget.TextView.setText(TextView.java:3646)
                                                                          at com.eranewgames.medicina.Auth.LoginSmsCode$2.onTextChanged(LoginSmsCode.java:56)
                                                                          at android.widget.TextView.sendOnTextChanged(TextView.java:7408)
                                                                          at android.widget.TextView.setText(TextView.java:3816)
                                                                          at android.widget.TextView.setText(TextView.java:3671)
                                                                          at android.widget.EditText.setText(EditText.java:80)
                                                                          at android.widget.TextView.setText(TextView.java:3646)
                                                                          at com.eranewgames.medicina.Auth.LoginSmsCode$2.onTextChanged(LoginSmsCode.java:57)
                                                                          at android.widget.TextView.sendOnTextChanged(TextView.java:7408)
                                                                          at android.widget.TextView.setText(TextView.java:3816)
                                                                          at android.widget.TextView.setText(TextView.java:3671)
                                                                          at android.widget.EditText.setText(EditText.java:80)
                                                                          at android.widget.TextView.setText(TextView.java:3646)
                                                                          at com.eranewgames.medicina.Auth.LoginSmsCode$2.onTextChanged(LoginSmsCode.java:57)
                                                                          at android.widget.TextView.sendOnTextChanged(TextView.java:7408)
                                                                          at android.widget.TextView.setText(TextView.java:3816)
                                                                          at android.widget.TextView.setText(TextView.java:3671)
                                                                          at android.widget.EditText.setText(EditText.java:80)
                                                                          at android.widget.TextView.setText(TextView.java:3646)
                                                                          at com.eranewgames.medicina.Auth.LoginSmsCode$2.onTextChanged(LoginSmsCode.java:57)
                                                                          at android.widget.TextView.sendOnTextChanged(TextView.java:7408)
                                                                          at android.widget.TextView.setText(TextView.java:3816)
                                                                          at android.widget.TextView.setText(TextView.java:3671)
                                                                          at android.widget.EditText.setText(EditText.java:80)
                                                                          at android.widget.TextView.setText(TextView.java:3646)
                                                                          at com.eranewgames.medicina.Auth.LoginSmsCode$2.onTextChanged(LoginSmsCode.java:57)
                                                                          at android.widget.TextView.sendOnTextChanged(TextView.java:7408)
                                                                          at android.widget.TextView.setText(TextView.java:3816)
                                                                          at android.widget.TextView.setText(TextView.java:3671)
                                                                          at android.widget.EditText.setText(EditText.java:80)
                                                                          at android.widget.TextView.setText(TextView.java:3646)
                                                                          at com.eranewgames.medicina.Auth.LoginSmsCode$2.onTextChanged(LoginSmsCode.java:57)
                                                                          at android.widget.TextView.sendOnTextChanged(TextView.java:7408)
                                                                          at android.widget.TextView.setText(TextView.java:3816)
                                                                          at android.widget.TextView.setText(TextView.java:3671)
                                                                          at android.widget.EditText.setText(EditText.java:80)
                                                                          at android.widget.TextView.setText(TextView.java:3646)
                                                                          at com.eranewgames.medicina.Auth.LoginSmsCode$2.onTextChanged(LoginSmsCode.java:57)
                                                                          at android.widget.TextView.sendOnTextChanged(TextView.java:7408)
                                                                          at android.widget.TextView.setText(TextView.java:3816)
                                                                          at android.widget.TextView.setText(TextView.java:3671)
                                                                          at android.widget.EditText.setText(EditText.java:80)
                                                                        at android.widget.TextView.setText(TextV
Answer 1

первый вариант, прозрачный EditText поверх TextView, и когда вы вводите текст в EditText, он перехватывает текст, после чего вы его обрабатываете и сетаете в TextView.

второй вариант, заполнить EditText "- - - - -", после этого надо поставить слушателя на вводимый текст и его обрабатывать и пересетовать в EditText

пример

    editText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                }
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                   //например у вас 9 символов в EditText изначально
                   if(editText.getText().length() == 10){
                      //тут обрабатываем текст и сетаем опять 9 символов 
                   }
                }
                @Override
                public void afterTextChanged(Editable s) {
                }
            });
Answer 2

Похожий вопрос уже задавался. В ответе есть ссылки на готовые библиотеки, которые реализуют необходимый Вам UI элемент

Answer 3

Эта штука "как в Whatsapp" называется Passcode - по имени виджета в iOS/iPhone.

В Android есть много реализаций смотрите сюда

READ ALSO
Enum дного пакета в Enum другого пакета. Java

Enum дного пакета в Enum другого пакета. Java

Есть класс enum A в пакете A1 и есть класс enum A в пакете B2, A1A отличается от B2

231
Есть ли в Android аналог виджета ColorDialog из Delphi?

Есть ли в Android аналог виджета ColorDialog из Delphi?

Нужно создать меню выбора цвета из палитрыВ Delphi есть ColorDialog

258
Стилизация выпадающего списка <select>

Стилизация выпадающего списка <select>

Не могу никак добиться нужной стилизации выпадающего спискаПерелопатил интернет - только варианты с плагинами jquery

363
PSD to HTML, Mailjet

PSD to HTML, Mailjet

Подскажите пожалуйста, имеется задача перевести psd в HTML, но есть уточнение, что CSS не нуженПосле сказано что делать это надо в Mailjet

186