Я хочу сделать представление только для чтения EditText
. XML для выполнения этого кода кажетсяandroid:editable="false"
, но я хочу сделать это в коде.
Как я могу это сделать?
android
android-edittext
Warna
источник
источник
android:editable
дляEditText
.UI.setReadOnly(myEditText, true)
из этой библиотеки . Необходимо установить несколько свойств, которые вы можете проверить в исходном коде .android:inputType="none"
иandroid:textIsSelectable="true"
Ответы:
Пожалуйста, используйте этот код ..
источник
Если ты
setEnabled(false)
тогда твойeditText
будет выглядеть отключенным (серый и т. Д.). Возможно, вы не захотите изменять внешний вид вашего редактора.Менее навязчивым способом было бы использовать
setFocusable(false)
.Я считаю, что это ответ на ваш вопрос ближе к вашему первоначальному намерению.
источник
setFocusable(false)
(и дажеsetFocusableInTouchMode(false)
сsetClickable(false)
), вы все равно можете изменить значениеeditText
нажатияeditText
на несколько сотен миллисекунд и выбратьPaste
опцию, если системный буфер обмена не пуст. Я тестировал его с новейшим доступным API - 23 .В
XML
использовании:Например:
источник
editable
атрибут не считается устаревшим (по крайней мере, не для уровня API 23).android:inputType="none"
android:inputType="none"
но данные все еще можно редактировать.Это работает для меня:
источник
Лучше всего использовать
TextView
вместо этого.источник
Согласно документам это предотвращает отображение мягкой клавиатуры. Это также предотвращает вставку, позволяет прокручивать и не изменяет визуальный аспект представления. Однако это также предотвращает выбор и копирование текста в представлении.
Из моих тестов установки ,
setInputType
чтобы ,TYPE_NULL
кажется, функционально эквивалентен амортизируетсяandroid:editable="false"
. Кроме того,android:inputType="none"
похоже, не имеет заметного эффекта.источник
android:inputType="none"
больше не работает.android: editable = "false" устарел. Поэтому вы не можете использовать его, чтобы текст редактирования был доступен только для чтения.
Я сделал это с помощью решения ниже. Здесь я использовал
андроид: inputType = "нет"
андроид: textIsSelectable = "истина"
андроид: фокусируемые = «ложь»
Попробуйте :)
источник
android:enabled="false"
может быть хорошей альтернативой.Это даст вам нередактируемый фильтр EditText. вам сначала нужно поместить нужный текст в поле editText, а затем применить этот фильтр.
источник
return dst.subSequence(dstart, dend);
написания этих двух строк более чем достаточно для вашей работы.
источник
установлен в XML
источник
Попробуйте использовать
источник
Если установлено, указывает, что у
TextView
него есть метод ввода. Это будет текстовый, если не указано иное. ИбоTextView
по умолчанию это false. ИбоEditText
по умолчанию это правда.Должно быть
boolean
значение, либоtrue
илиfalse
.Это также может быть ссылка на ресурс (в форме
@[package:]type:name
) или атрибут темы (в форме?[package:][type:]name
), содержащий значение этого типа.Это соответствует редактируемому символу ресурса глобального атрибута.
Связанные методы
источник
Попробуйте переопределить прослушиватель onLongClick текста редактирования, чтобы удалить контекстное меню:
источник
Используйте этот код:
Отключение
editText
дает вид и поведение только для чтения, но также меняетtext-color
цвет на серый, поэтому необходимо установить цвет текста.источник
это моя реализация (немного длинная, но полезная для меня!): С помощью этого кода вы можете сделать EditView доступным только для чтения или обычным. даже в состоянии только для чтения текст может быть скопирован пользователем. вы можете изменить фон, чтобы он отличался от обычного EditText.
Преимущество этого кода в том, что EditText отображается как обычный EditText, но его содержимое нельзя изменить. Возвращаемое значение следует сохранить как переменную, чтобы можно было вернуться из состояния только для чтения в нормальное состояние.
чтобы сделать EditText доступным только для чтения, просто укажите его как:
и чтобы сделать это нормально, используйте tw из предыдущего оператора:
источник
У меня это сработало, учитывая некоторые из приведенных выше предложений. Делает TextEdit фокусируемым, но если пользователь щелкает или фокусируется, мы показываем список выбранных элементов в PopupWindow. (Мы заменяем дурацкий виджет Spinner). TextEdit xml очень общий ...
источник
Если вы просто хотите , чтобы иметь возможность копировать текст из - под контроля , но не быть в состоянии редактировать это вы можете захотеть использовать TextView вместо и набора текста является выбор .
код:
XML:
В документации setTextIsSelectable говорится:
Однако мне пришлось явно установить focusable и focusableInTouchMode в значение true, чтобы он работал с сенсорным вводом.
источник
Для меня это было единственное полностью простое решение.
источник
У меня не было проблем с тем, чтобы EditTextPreference был доступен только для чтения, используя:
Это хорошо работает в сочетании с использованием поля «сводка» для отображения полей только для чтения (полезно, например, для отображения информации об учетной записи). Обновление полей сводки, динамически извлеченных из http://gmariotti.blogspot.com/2013/01/preferenceactivity-preferencefragment.html
источник
Установите это в XML-файле EdiTextView
источник
Как
android:editable=""
не рекомендуется,Настройка
android:clickable="false"
android:focusable="false"
android:inputType="none"
android:cursorVisible="false"
сделает его доступным только для чтения.
Однако пользователи по-прежнему смогут вставлять в поле или выполнять любые другие действия с длительным щелчком. Чтобы отключить это, просто переопределите onLongClickListener ().
В Котлине:
myEditText.setOnLongClickListener { true }
достаточно.
источник
Мой подход к этому заключается в создании настраиваемого класса TextWatcher следующим образом:
Затем вы просто добавляете этого наблюдателя в любое поле, которое хотите, чтобы его можно было только читать, несмотря на то, что он включен:
источник