Отключение EditText в Android - PullRequest
       83

Отключение EditText в Android

165 голосов
/ 28 ноября 2010

В моем приложении у меня есть EditText, который пользователь имеет только для чтения, но не для записи.

В коде, который я установил android:enabled="false".

Хотя фон EditText изменился на темный, когда я нажимаю на него, клавиатура всплывает и я могу изменить текст.

Что я должен установить, чтобы отключить EdidText?

Спасибо.

Ответы [ 23 ]

216 голосов
/ 28 ноября 2010

Полагаю, правильным будет установить android:editable="false".

И если вам интересно, почему моя ссылка указывает на атрибуты TextView, вы ответите, потому что EditText наследуется от TextView:

EditText - тонкий шпон TextView, который настраивает себя, чтобы быть редактируемые.

Обновление:
Как упомянуто в комментариях ниже, editable устарело ( начиная с уровня API 3 ). Вместо этого вы должны использовать inputType (со значением none).

150 голосов
/ 20 января 2012

используйте EditText.setFocusable(false) для отключения редактирования
EditText.setFocusableInTouchMode(true) для включения редактирования;

57 голосов
/ 02 августа 2013

Используйте это, чтобы отключить ввод пользователя

55 голосов
/ 03 апреля 2015

Вы можете попробовать следующий метод:

 private void disableEditText(EditText editText) {
    editText.setFocusable(false);
    editText.setEnabled(false);
    editText.setCursorVisible(false);
    editText.setKeyListener(null);
    editText.setBackgroundColor(Color.TRANSPARENT); 
 }

Включено EditText:

Enabled EditText

Отключено EditText:

Disabled EditText

Это работает для меня и надеюсь, что это поможет вам.

24 голосов
/ 25 декабря 2017

Для отключения редактирования EditText, я думаю, мы можем использовать focusable ИЛИ enable, но

  1. Используя android:enabled=... или editText.setEnabled(...)

    Также меняет цвет текста на EditText на серый.
    При нажатии не влияет

  2. Использование android:focusable=... илиeditText.setFocusable(false) - editText.setFocusableInTouchMode(true)

    Это не изменяется Цвет текста EditText
    При нажатии на него выделите нижнюю строку EditText в течение нескольких миллисекунд

Выход

enter image description here

18 голосов
/ 19 декабря 2015

Поскольку android:editable="false" не допускается. Вы можете использовать InputType TYPE_NULL для EditText

используйте так:

editText.setInputType(InputType.TYPE_NULL);
17 голосов
/ 27 июня 2017

Как android:editable="false" устарело В xml

Используйте android:enabled="false" это просто. Зачем использовать больше кода?

Если вы хотите java class, вы также можете использовать это программно

 editText.setEnabled(false);
9 голосов
/ 07 ноября 2015

Просто:

editText.setEnabled(false);
5 голосов
/ 02 марта 2017

Установите ниже свойства в классе:

editText.setFocusable(false);
editText.setEnabled(false);

Это будет работать гладко, как вам требуется.

4 голосов
/ 23 июня 2014

если вы используете android:editable="false", eclipse будет напоминать вам это сообщение "android: editable устарело: используйте взамен inputType".

Итак, вместо этого я использую android:focusable="false", это хорошо сработало1005 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...