В моем приложении у меня есть EditText, который пользователь имеет только для чтения, а не для записи.
В коде я установил android:enabled="false"
.
Хотя фон EditText изменился на темный, при нажатии на него появляется клавиатура, и я могу изменить текст.
Что я должен установить, чтобы отключить EditText?
android
android-edittext
Hesam
источник
источник
EditText
сохранение этих свойств, просто используйтеUI.setReadOnly(myEditText, true)
из этой библиотеки . Если вы хотите повторить это поведение без библиотеки, проверьте исходный код этого небольшого метода.Ответы:
Я считаю, что правильно будет установить
android:editable="false"
.И если вам интересно, почему моя ссылка указывает на атрибуты
TextView
, вы ответите, потому чтоEditText
наследует отTextView
:Обновление:
как упомянуто в комментариях ниже,
editable
не рекомендуется ( начиная с уровня API 3 ). Вы должны вместо этого использоватьinputType
(со значениемnone
).источник
editText.setEnabled(false); editText.setInputType(InputType.TYPE_NULL);
android:editable="false" android:focusable="false"
отлично работает для меня (забудьте об устаревшем, я думаю, android: редактируемый не имеет ничего общего с android: inputType)используйте
EditText.setFocusable(false)
для отключения редактирования,EditText.setFocusableInTouchMode(true)
чтобы включить редактирование;источник
editText.setEnabled(false);
изменит цвет текста на серый. Однако блесны не изменяют цвет текста при использованииsetEnabled
, что делает его непоследовательным.setFocusable(true)
? см. эту ссылку, чтобы узнать разницу междуsetFocusable()
иsetFocusableInTouchMode()
: stackoverflow.com/questions/23799064/…Вы можете попробовать следующий метод:
Включен EditText:
Отключено EditText:
Это работает для меня и надеюсь, что это поможет вам.
источник
editText.setFocusableInTouchMode(true)
а неeditText.setFocusable(true)
.Используйте это, чтобы отключить пользовательский ввод
android: editable = "false" Этот метод устарел.
источник
Для отключения редактирования
EditText
, я думаю, мы можем использоватьfocusable
ИЛИ,enable
ноИспользуя
android:enabled=...
илиeditText.setEnabled(...)
Он также меняет цвет текста
EditText
на серый.При нажатии это не имеет никакого эффекта
Используя
android:focusable=...
илиeditText.setFocusable(false)
-editText.setFocusableInTouchMode(true)
Он не меняет цвет текста.
EditText
При щелчке выделяет
EditText
нижнюю строку в течение нескольких миллисекунд.Вывод
источник
android:longClickable="false"
вместе с ,android:focusable="false"
чтобы удалить временную подсветку при касании этой точки зрения. Это также предотвращает появление всплывающего окна «Выбрать все».Как
android:editable="false"
не рекомендуется. Вы можете использовать InputType TYPE_NULL на EditTextиспользуйте как это:
источник
Как
android:editable="false"
не рекомендуетсяxml
Если вы хотите,
java class
вы также можете использовать это программноисточник
Просто:
источник
Установите ниже свойства в классе:
Это будет работать так, как вам нужно.
источник
enabled
было достаточноЧтобы отключить функциональность EditText, просто используйте:
если вы хотите включить его каким-либо образом, вы можете использовать:
источник
если вы используете
android:editable="false"
, eclipse будет напоминать вам это сообщение «android: editable устарела: используйте вместо inputType».Таким образом, я использую
android:focusable="false"
вместо этого, это работало хорошо для меня.источник
сейчас устарела и использовать
источник
TYPE_TEXT_VARIATION_PASSWORD
Следуйте за этим для большего количества developer.android.com/reference/android/text/InputTypeИспользуйте
TextView
вместо этого.источник
Это сделает ваш текст редактирования отключенным .
И с помощью этого
Просто заставит ваш Edittext не показывать вашу программную клавиатуру, но если он подключен к физической клавиатуре, он позволит вам печатать.
источник
Отключить = ФОКУС + ЩЕЛЧОК + КУРСОР
Отключение фокуса, щелчка и видимости курсора помогает мне.
источник
Я использую недавно выпущенную Google библиотеку материалов. В моем случае это работает, когда я использую android: focusable = "false" и android: cursorVisible = "false"
источник
В моем случае мне нужно
EditText
было прокрутить текст, если нет. из строк превышаетmaxLines
когда его отключено. Эта реализация отлично сработала для меня.источник
Попробуйте это, отлично работает для меня:
Примечание: Вы должны добавить
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
в вашей деятельности , либоkeyboard
будет всплывать в первый раз.источник
Как отмечают некоторые ответы, если вы отключите editText, он станет серым, а если вы установите фокусируемое значение false, курсор отобразится.
Если вы хотели бы сделать это только с XML, это сделало свое дело
Я просто добавляю FrameLayout, появляющийся над editText, и устанавливаю его фокусируемым и активируемым, чтобы на editText нельзя было кликать.
источник
Это работает для меня:
андроид: фокусируемые = «ложь»
источник
Из комментария @ Asymptote о принятом ответе используйте:
... а Боб твой дядя.
источник
Сегодня я все еще использую
editable="false"
, но и сfocusable="false"
.Я думаю, что мы должны сделать EditText недоступным для редактирования, потому что мы хотим сохранить его стиль EditText (с этим подчеркиванием, подсказкой и т. Д.), Но он принимает другие входные данные вместо текста. Например выпадающий список.
В таком случае нам нужно иметь
EditText
кликабельность (поэтомуenabled="false"
не подходит). Настройкаfocusable="false"
делает этот трюк, однако, я все еще могу долго удерживать EditText и вставить свой собственный текст на него из буфера обмена . В зависимости от вашего кода и обработки это может даже привести к сбою приложения.Так что я тоже пользовался
editable="false"
и сейчас все отлично, кроме предупреждения.источник
Вы можете использовать,
android:focusable="false"
но также необходимо отключить курсор, иначе функция копирования / вставки все равно будет работать.так что пользуйтесь
источник
Есть несколько способов достижения нескольких уровней инвалидности.
editText.setShowSoftInputOnFocus(false);
иeditText.setFocusable
запрещает
EditText
показ клавиатуры - написание текста. Но курсор все еще виден, и пользователь может вставить некоторый текст.editText.setCursorVisible(false)
прячет курсор Не уверен, зачем тебе это делать. Пользователь может вводить текст и вставлять.
editText.setKeyListener(null)
Я считаю этот способ наиболее удобным. Пользователь не может вводить текст, но виджет по-прежнему работает,
OnClickListener
если вы хотите инициировать действие, когда пользователь касается его.editText.setEnabled(false);
полностью отключает
EditText
. Он буквально «только для чтения», пользователь не может вводить в него текст и (например)OnClickListener
не работает с ним.Документация TextEdit
источник
Установите это в своем коде XML, это работает.
андроид: focusableInTouchMode = "ложь"
источник