Сделайте EditText доступным только для чтения - PullRequest
105 голосов
/ 17 июня 2011

Я хочу сделать просмотр только для чтения EditText. XML для этого кода выглядит как android:editable="false", но я хочу сделать это в коде.

Как я могу это сделать?

Ответы [ 19 ]

124 голосов
/ 17 июня 2011

Пожалуйста, используйте этот код ..

Edittext.setEnabled(false);
90 голосов
/ 25 сентября 2011

Если вы setEnabled(false), тогда ваш editText будет выглядеть отключенным (серый и т. Д.).Вы можете не захотеть изменять визуальный аспект вашего редактора.

Менее навязчивым способом было бы использовать setFocusable(false).

Я считаю, что это отвечает на ваш вопрос ближе к вашему первоначальному намерению.

27 голосов
/ 11 марта 2014

В XML использование:

android:editable="false"

Как пример:

<EditText
    android:id="@+id/EditText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:editable="false" />
20 голосов
/ 29 декабря 2011

Это работает для меня:

EditText.setKeyListener(null);
14 голосов
/ 17 июня 2011

Лучше всего использовать TextView.

12 голосов
/ 22 марта 2016
editText.setInputType(InputType.TYPE_NULL);

Согласно документам это предотвращает отображение экранной клавиатуры.Это также предотвращает вставку, позволяет прокручивать и не изменяет визуальный аспект вида.Однако это также препятствует выделению и копированию текста в представлении.

Из моих тестов установка setInputType в TYPE_NULL функционально эквивалентна амортизированной android:editable="false".Кроме того, android:inputType="none", кажется, не имеет заметного эффекта.

7 голосов
/ 17 июня 2011
editText.setEnabled(false);
editText.setFilters(new InputFilter[] { new InputFilter() {
    public CharSequence filter(CharSequence src, int start, int end,
            Spanned dst, int dstart, int dend) {
        return src.length() < 1 ? dst.subSequence(dstart, dend) : "";
    }
} });

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

6 голосов
/ 16 марта 2018

android: editable = "false" устарела.Поэтому вы не можете использовать его, чтобы редактировать текст только для чтения.

Я сделал это с помощью решения ниже.Здесь я использовал

android: inputType = "none"

android: textIsSelectable = "true"

android: focusable = "false"

Дайте попробовать:)

<EditText
         android:id="@+id/et_newsgpa_university"
         android:layout_height="wrap_content"
         android:layout_width="match_parent"
         android:hint="@string/hint_educational_institute"
         android:textSize="@dimen/regular_text"
         android:inputType="none"
         android:textIsSelectable="true"
         android:focusable="false"
         android:maxLines="1"
         android:imeOptions="actionNext"/>
5 голосов
/ 02 марта 2016

установлено в XML

android:inputType="none" 
5 голосов
/ 26 июля 2013

написания этих двух строк более чем достаточно для вашей работы.

yourEditText.setKeyListener(null); 
yourEditText.setEnabled(false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...