Android EditText: выделите весь текст при касании и очистите, когда пользователь начнет печатать.

В моем приложении есть текст для редактирования. Когда пользователь касается текста редактирования, весь текст должен быть выделен, а когда он начинает вводить текст, должен быть очищен. Примером может служить адресная строка браузера. Есть ли способ сделать это? Пожалуйста, помогите мне.


person user1767260    schedule 21.11.2012    source источник
comment
Скажите, пожалуйста, почему вы хотите это сделать?   -  person Ishtiaq    schedule 21.11.2012
comment
Используйте android: hint = text witch, которое вы хотите отобразить после включения клавиатуры, это despra   -  person Zala Janaksinh    schedule 21.11.2012
comment
Вы можете сделать [это] [1], чтобы выделить весь текст внутри edittext [1]: stackoverflow.com/a/4669511/1627599   -  person kittu88    schedule 21.11.2012
comment
@Asfaq: я хочу очистить предыдущие данные, когда пользователь начинает печатать   -  person user1767260    schedule 21.11.2012


Ответы (6)


Вы можете выделить весь текст в EditText, используя

android:selectAllOnFocus, а также _ 2_

person Ram kiran    schedule 21.11.2012
comment
Спасибо. Это выделяет текст, но когда я снова касаюсь текста редактирования, чтобы отобразить клавиатуру, текст не очищается. - person user1767260; 21.11.2012

Вызов EditText.setSelectAllOnFocus(boolean selectAllOnFocus), чтобы выделить весь текст в фокусе.

Установите прослушиватель кликов на свой EditText и в onClick вызов edittext.selectAll();

person Ronnie    schedule 21.11.2012
comment
Установите прослушиватель кликов для вашего EditText и в onClick вызовите edittext.selectAll (); - person Ronnie; 21.11.2012
comment
Спасибо, это лучше, чем ответ, потому что вы можете не захотеть, чтобы ваш инопланетянин сосредоточился сразу же, когда вы приступите к работе. Но вместо того, чтобы делать onClick в XML, я установил onClickListener в своей активности ET, затем поместил метод selectAll() в свой ET в его метод onClick(), и он выбирает все, только когда вы щелкаете по нему. - person Azurespot; 13.05.2016

Добавьте атрибут в свой файл main.xml:

android:selectAllOnFocus="true"

Затем будет выделен весь текст, и когда пользователь введет что-то, он удалит его.

person Marcin S.    schedule 21.11.2012

Вы можете использовать свойство android:hint вместо android:text, и вы получите то, что хотите, без специального кода.

person Artyom Kiriliyk    schedule 21.11.2012

Вы можете выделить весь текст в EditText с помощью android:selectAllOnFocus или setSelectAllOnFocus(boolean).

Установите флажок, когда выделен весь текст. Затем обнаружите изменение текста с помощью addTextChangedListener в вашем EditText и заставьте ваш класс реализовать или определить внутренний класс, реализующий TextWatcher.

В этом методе класса наблюдателя проверьте установленный вами флаг, чтобы указать, выбран ли весь текст. если правда, то сделать TextView.setText(""). Это очистит текст. Теперь снова установите флаг в значение false, чтобы последующие изменения текста не вызывали его очистку.

person Anup Cowkur    schedule 21.11.2012

Это работает, весь текст будет выбран, и когда пользователь введет что-то, что удалит его.

             editText.setSelectAllOnFocus(true);

            editText.requestFocus();
            editText.postDelayed(new Runnable() {
                @Override
                public void run() {
                    InputMethodManager keyboard = (InputMethodManager) catalougeJobDetailFragment
                            .getActivity().getSystemService(
                                    Context.INPUT_METHOD_SERVICE);
                    keyboard.showSoftInput(commentEt, 0);
                }
            }, 20);
person Neetu Shrivastava    schedule 24.11.2014