Может кто-нибудь сказать мне, как сделать EditText
не редактируемым через XML? Я попытался установить android:editable
в false
, но
- это устарело; и
- это не сработало.
android
android-edittext
Фрэн Фицпатрик
источник
источник
EditText
стиль и разрешение скроллинг, использованиеUI.setReadOnly(myEditText, true)
из этой библиотеки . Необходимо установить несколько свойств, которые вы можете проверить в исходном коде .Ответы:
Используйте этот простой код:
Оно работает.
Редактировать: чтобы добавить
KeyListener
позже, сделайте следующее1: установить ключевой слушатель на тег
textView
2: получить ключевой слушатель из тега и установить его обратно
textView
источник
setFocusable()
потому что в документе сказано, что реализация по умолчанию может быть изменена при изменении.Добавьте это в ваш XML-файл EditText:
Это сделает тот же эффект, что и
android:editable="false"
. Сработало для меня, надеюсь, это сработает и для вас.источник
TextInputLayout
Пусть ваш Edittext будет
editText.setKeyListener(null);
будет работать, но он просто не слушает ключи.
Пользователь может видеть курсор на тексте редактирования.
Можешь попробовать
editText.setEnabled(false);
Это означает, что пользователь не может видеть курсор. Проще говоря, это станет
TextView
.источник
Как упоминалось в других ответах, вы можете сделать это,
setEnabled(false)
но так как вы спрашиваете, как установить его через XML, вот как это сделать.Добавьте следующий атрибут к вашему
EditText
:источник
enabled
не рекомендуется.editable
является.отключить из XML (одна строка):
при необходимости повторно включите из Java (также одной строкой):
источник
Они сделали «редактируемые» устаревшими, но не предоставили рабочую соответствующую в inputType.
Кстати, inputType = "none" не имеет никакого эффекта? Использование этого или нет не имеет никакого значения, насколько я вижу.
Например, editText по умолчанию называется одной строкой. Но вы должны выбрать inputType, чтобы он был одной строкой. И если вы выберете «нет», он все равно будет многострочным.
источник
Эта комбинация работала для меня:
источник
Как вы упомянули Android: редактируемый устарел. android: inputType = "none" следует использовать вместо этого, но он не работает из-за ошибки ( https://code.google.com/p/android/issues/detail?id=2854 )
Но вы можете добиться того же, используя фокусируемый.
Через XML:
Из кода:
источник
если вы хотите щелкнуть по нему, но не хотите его редактировать, попробуйте:
источник
Просто используйте
android:enabled="false"
. Это также придаст вид,EditText
который сделает его не редактируемым.источник
и используйте следующее:
источник
Если вы хотите сделать это в коде Java, просто используйте эту строку, чтобы отключить это:
И это, чтобы включить его:
источник
Я пытался сделать:
который должен работать, но для меня это не так.
Я закончил с этим кодом:
который работает отлично.
источник
Когда я хочу, чтобы действие не фокусировалось на EditText, а также не показывало клавиатуру при нажатии, это то, что работало для меня.
Добавление атрибутов в основной макет
а затем поле EditText
Вот пример:
источник
Атрибут «longClickable» отключает длительное нажатие, при котором параметры «Вставить» или «Выбрать все» отображаются в виде всплывающей подсказки.
источник
В дополнение к @mahe madi вы можете попробовать это
Этот метод скрывает курсор, теряет фокус и, что более важно, устанавливает цвет текста на черный, ведущий себя как TextView.
И чтобы вернуться к editText, просто сделайте это, чтобы получить все свойства EditText.
Надеюсь, поможет :)
источник
Вы можете использовать,
android:editable="false"
но я бы посоветовал вам использоватьsetEnabled(false)
его, поскольку он предоставляет пользователю визуальную подсказку о том, что элемент управления нельзя редактировать. Одна и та же визуальная подсказка используется всеми отключенными виджетами, и последовательность хорошая.источник
Я пробовал следующее:
но проблема заключалась в том, что если текст редактирования является первым в форме, тогда он получает фокус, и сразу вызывается код pickCode (), который запускает новое действие. Поэтому я изменил код следующим образом, и он, кажется, работает довольно хорошо (за исключением того, что я не могу установить фокус на редактирование текста, но мне это не нужно):
Наилучшие пожелания,
Комментарии приветствуются,
Джон Гош
источник
Я использую
EditText.setFocusable(false)
и снова устанавливаю true, если я хочу редактировать.источник
Попробуй это :
источник
Таким образом, сделал работу для меня, я могу выбрать и скопировать в буфер обмена, но я не могу изменить или вставить.
источник
android: редактируемый устарел, поэтому вместо него используйте inputType .
источник
Я столкнулся с той же проблемой, но после наблюдения я обнаружил, что
android:editable="false"
это работает, только когда inputtype (android:inputType="ANY_VALUE"
) не указан в Edittext.Удалите inputType из EditText и используйте editable = false, все работает нормально.
источник
Я решаю это с помощью диалога.
источник
Краткий ответ: я использовал,
android:focusable="false"
и это сработало. Прослушивание кликов также работает сейчас.источник
Пытаться
источник
Попробуйте этот код. Он работает в моем проекте, поэтому он будет работать в вашем проекте.
источник