Как сделать edittext неактивным android

Как сделать EditText недоступным для редактирования через XML в Android?

Может ли кто-нибудь сказать мне, как сделать EditText недоступным для редактирования через XML? Я пробовал настройку android:editable значение false , но

  1. Он устарел; а также
  2. Это не сработало.

Используйте этот простой код:

Изменить: Чтобы добавить KeyListener позже, сделайте следующее

1: установить ключевой прослушиватель в тег textView

2: получите ключевой прослушиватель из тега и верните его в textView

Добавьте это в свой XML-файл EditText:

Он будет делать тот же эффект, что android:editable=»false» . Работал для меня, надеюсь, что это сработает и для вас.

Пусть ваш Edittext

Будет работать, но он просто не слушает клавиши.

Пользователь может видеть курсор на edittext.

Вы можете попробовать editText.setEnabled(false);

Это означает, что пользователь не может видеть курсор. Просто сказать, что это станет TextView .

Отключить XML (одна строка):

Повторно включить с Java, если необходимо (также одна строка):

Как упоминалось в некоторых из приведенных выше ответов, вы можете сделать setEnabled(false) но так как вы спрашиваете, как установить его через XML, вот как это сделать.

Добавьте в свой EditText следующий атрибут:

Они сделали «редактируемым» устаревшим, но не обеспечивали рабочий соответствующий в inputType.

Кстати, имеет ли значение inputType = «none»? Насколько я понимаю, использование этого или нет.

Например, текстовый текст по умолчанию называется одиночной. Но вам нужно выбрать inputType, чтобы он был однострочным. И если вы выберете «none», он все еще многострочный.

Как вы сказали, андроид: редактируемый устарел. Android: inputType = «none» следует использовать вместо этого, но это не работает из-за ошибки ( https://code.google.com/p/android/issues/detail?id=2854 )

Но вы можете добиться того же, используя фокусируемое.

Если вы хотите щелкнуть по нему, но не хотите его редактировать, попробуйте:

Если вы хотите сделать это в java-коде, просто используйте эту строку, чтобы отключить его:

И это, чтобы включить это:

Я пытался это сделать:

Который должен работать, но для меня это не так.

Я закончил с этим кодом:

Который отлично работает.

И используйте следующее:

Просто используйте android:enabled=»false» . Это также даст вид EditText который заставит его выглядеть не редактируемым.

Вы можете использовать android:editable=»false» но я бы действительно посоветовал вам использовать setEnabled(false) поскольку он дает визуальную подсказку пользователю о том, что элемент управления нельзя редактировать. Такая же визуальная метка используется всеми отключенными виджетами, и согласованность хороша.

Когда я хочу, чтобы активность не фокусировалась на EditText, а также не отображала клавиатуру при нажатии, это то, что сработало для меня.

Добавление атрибутов в основной макет

А затем поле EditText

Я пробовал следующее:

Но проблема заключалась в том, что если текст редактирования является первым в форме, он получает фокус, и сразузывается код pickCode (), который запускает новое действие. Поэтому я изменил код следующим образом и, похоже, работает неплохо (за исключением того, что я не могу сосредоточиться на редактировании текста, но мне не нужно):

С наилучшими пожеланиями,

В дополнение к @mahe madi вы также можете попробовать это

Этот метод скроет курсор, потеряет фокус и, что более важно, установит цвет текста черным, как TextView.

И для возврата обратно в editText просто сделайте это, чтобы получить все свойства EditText.

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

Android: editable устарел, поэтому вместо этого используйте inputType .

Этот способ выполнил эту работу для меня, я могу выбрать и скопировать в буфер обмена, но я не могу изменять или вставлять.

Я столкнулся с такой же проблемой, но после наблюдения я обнаружил, что android:editable=»false» работает только тогда, когда inputtype ( android:inputType=»ANY_VALUE» ) не указан в Edittext.

Читайте также:  Как взломать террария андроид

Удалите inputType из EditText и используйте editable = false, его работоспособность.

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

Попробуйте этот код. Он работает в моем проекте, поэтому он будет работать в вашем проекте.

Источник

Как сделать editText не редактируемым при определенном условии

Как сделать viev-шку editText в Android Studio не кликабельной, при наступлении определённого условия?
Ну чтобы данные от set-тера из программы она могла принять и отобразить, а потом эти данные нельзя было в ней как-то редактировать пользователем.
В общем есть spinner заполненный списком типа:

Ваша деревня
Москва
Санкт-Петербург
Хутор Верхние Бодуны
Хренище Воронежской области

при выборе населенного пункта в двух editText-ах выводится, скажем, почтовый индекс и количество населения.
Нужно сделать так, чтобы пользователь мог изменять данные editText-ов только при выборе пункта «Ваша деревня»
Может setFocusable или setClickable.
типа как-то так. может быть. не подскажете ?

Как сделать чтобы событие Worksheet_Change срабатывало только при определенном условии?
а как сделать чтобы событие Worksheet_Change срабатывало только при определенном условии? Можно.

Сделать поле видимым в DBGrid, редактируемым программно, но не редактируемым в DBGrid
Как сделать поле видимым в DBGrid, редактируемым программно, но не редактируемым в DBGrid? Схема -.

Как не выполнять действия при определенном условии?
программа работает нормально, проблема только в одном при выводе сообщения «неправильно введено.

Как выйти из цикла while при определенном условии
Как выйти из цикла while при определенном условии (используя if) do while ‘что-то if.

Решение

Спасибо! Завтра попробую по Вашему совету.
PS Отчасти соглашусь с Вами. Но я бы не сказал ленивого (понятное дело — если долго гуглить, зная английский и быть молодым, то бишь легко-обучаемым — то да, Вы АБСолютно правы). Я бы сказал нетерпеливо-суетливого человека. Закончившего школу 35 лет назад, не имеющего представления о том, чё такое ООП и чем оно отличается от Бейсика для Синклера, не знающего английского к тому-же.
А что касаемо программирования — это просто так — то ли Хобби, то ли просто от дурных мыслей о болезни отвлечься, как доктор прописал. В общем может и зря всё это конечно, спорить не буду.
Ещё раз благодарю и прошу прощения !

Добавлено через 46 минут
Vladimirys, не утерпел. сделал сейчас.
Вы не поверите — всё получилось. а ведь до этого не сидел, не ленился, пробовал всяко-разно отсюда —

но как нужно не выходило. Хотя и не ругалось ничего (синтаксис, компиляция и проч.) Теперь работает как мне нужно. Ещё раз благодарю!
. URL не вставился что-то..

Как залить ячейку в Exel при определенном условии
Доброе утро, ребята опять к вам за помощью. Для меня оказалось сложной задачей, хотя.

Как реализовать смену фона формы при определенном условии?
Всем :senor: . Дело было так. писал я значит код и столкнулся с проблемой. Сделал LangPack из.

При определенном условии сгенерировать массив
Нужно при определенном условии сгенерировать массив, если написать это условие: int i,j; for(i=0;.

Отобразить button при определенном условии
По умолчанию button1 скрыт в свойствах. Есть splitContainer у которого splitContainer.panel1 по.

Источник

Как очистить EditText при нажатии?

В Android, как я могу сделать EditText чистым, когда он нажал?

Например, если у меня есть EditText с некоторыми символами, например ‘Enter Name’ , когда пользователь нажимает на него, эти символы исчезают.

Я не уверен, если вы после этого, но попробуйте этот XML:

Он отображает этот текст, когда поле ввода пуст, выбрано или не выбрано.

Или если вы хотите, чтобы это было сделано точно так, как вы описали, назначьте onClickListener в editText и установите его пустым с помощью setText ().

Вы ищете поведение, подобное x, которое отображается в правой части текстовых полей на iphone, который очищает текст при нажатии? Это называется clearButtonMode. Вот как создать такую ​​же функциональность в представлении Android EditText:

После того, как onclick любого действия сделайте ниже шага

Записать это в файл XML

Читайте также:  Как ускорить работу планшет андроид

Его работы прекрасны для меня. Надеюсь на всех вас.

@ Ответ Харриса замечательный, я реализовал его как отдельный подкласс EditText, который может упростить его использование, если ваш код уже добавляет TextChangedListeners.

Кроме того, я изменил его так, чтобы, если вы уже используете какие-либо Compound Drawables, он оставляет их неповрежденными.

Код здесь, для тех, кто в нем нуждается:

Это называется подсказкой в ​​android use android: hint = «Enter Name»

Если вы хотите иметь текст в тексте редактирования и удалить его, как вы говорите, попробуйте:

Будьте внимательны при настройке текста с помощью прослушивателя onClick в поле, которое вы устанавливаете для текста. Я делал это и установил текст в пустую строку. Это вызывало указатель, чтобы указать, где находится мой курсор, который, как правило, уходит через несколько секунд. Когда я не дождался, когда он уйдет, прежде чем покинуть мою страницу, вызвавшую ее завершение (), это вызовет утечку памяти и разрушит мое приложение. Потратил меня на то, чтобы выяснить, что вызвало крах на этом.

Во всяком случае, я бы рекомендовал использовать selectAll () в вашем прослушивателе кликов, а не в setText (), если можно. Таким образом, как только текст будет выбран, пользователь может начать вводить текст, и весь предыдущий текст будет очищен.

// Очистить При нажатии кнопки «Очистить»

FirstName = (EditText) findViewById (R.id.firstName);

Это поможет очистить неверные ключевые слова, которые вы набрали, вместо того, чтобы снова и снова нажимать backspace, вы можете просто нажать кнопку, чтобы очистить все. Я работал для меня. Надеюсь, поможет

Код для очистки текстового поля при нажатии

Для меня самый простой способ … Создать публичный EditText, для примера «myEditText1»

Затем подключите его с помощью EditText, который должен быть очищен

После этого создайте пустоту, которая реагирует на щелчок на EditText, и пусть он очищает текст внутри него, когда его фокусировка, например

Надеюсь, что смогу вам помочь, Приятного дня каждый

Источник

Как сделать EditText не редактируемым через XML в Android?

может кто-нибудь сказать мне, как сделать EditText не редактируется через XML? Я попытался установить android:editable to false , а

  1. это устарело; и
  2. это не сработало.

24 ответов

используйте этот простой код:

Edit: добавить KeyListener позже, сделать следующее

1: Установите прослушиватель ключа в тег textView

2: Получите ключевой слушатель от тега и установите его обратно в textView

добавьте это в свой xml-файл EditText:

Он будет делать тот же эффект, что и android:editable=»false» . Сработало на меня, надеюсь, сработает и на тебя.

пусть ваш Edittext будет

будет работать, но он просто не слушает клавиши.

пользователь может видеть курсор на edittext.

вы можете попробовать editText.setEnabled(false);

это означает, что пользователь не может видеть курсор. Просто сказать ей станет TextView .

отключить из XML (одна строка):

повторно включить с Java, если нужно (также одна строка):

как упоминалось в других ответах, вы можете сделать setEnabled(false) но поскольку вы спрашиваете, как это сделать через XML, вот как это сделать.

добавьте следующий атрибут EditText :

Они сделали» редактируемым » устаревшим, но не предоставили рабочий соответствующий в inputType.

кстати, имеет ли inputType= «none» какой-либо эффект? Использовать его или нет не имеет никакого значения, насколько я вижу.

например, editText по умолчанию называется одной строкой. Но вы должны выбрать inputType, чтобы он был одной строкой. И если вы выберете «нет», он все равно будет многострочным.

Как вы упомянули android: редактируемый устарел. android:inputType= «none» должен использоваться вместо этого, но он не работает из-за ошибки (https://code.google.com/p/android/issues/detail?id=2854)

но вы можете достичь того же с помощью фокус.

Если вы хотите щелкнуть его, но не хотите редактировать, попробуйте:

Источник

Кастомный элемент EditText в Android

При разработке приложения для Android, хотелось бы сохранить цветовую схему элементов. Рассмотрим как это сделать для элемента EditText.

Шаг 1. Подготовка

Создадим обычный Android проект и добавим два элемента EditText:

Зачем нам два элемента EditText? Что бы наглядно увидеть состояние элемента. На самом деле их 5:

Читайте также:  Зума делюкс для андроида

1. default – стандартное;

2. active – активное;

3. focused – сфокусированное;

4. disable – запрещенное;

5. disable_focused – запрещенное сфокусированное.

но мы рассмотрим первые два, для остальных всё аналогично.

Итак, запустим приложение и на нашем Layout’е увидим два EditText‘а. Если мы захотим что то написать в одном из них и нажмем на него – состояние элемента станет Active:

Предположим, что для сохранения цветовой схемы в приложении, выделение линии EditText’а в активном состоянии должно быть фиолетовым (#5b009c). С этого момента всё стало не так просто, как хотелось бы 🙂

Покопавшись в SDK, можно найти найти такой ресурс:

Это исходник для поля EditText. По периметру изображения есть красные и черные полосы, отвечающие за изменение размера. То есть, если EditText требуется увеличить по ширине, из картинки выбирается кусок, помеченный черными полосками сверху и снизу и растягивается по длине. При этом в растягивании участвует только определенная область, тем самым не изменяя размер углам EditTex’а. Аналогично изменяется и по высоте. Красные линии – это обязательные отступы.

Итак, мы хотим изменить цвет для активного элемента. Можно перерисовать это изображение и загрузить в проект, но ведь не все дружат с графическими редакторами или может быть просто лень 😉

Для этих целей есть отличный web-сервис: Android Holo Colors Generator

В поле Theme Name следует указать название темы оформление, я назову EditTextStyle. Далее выбираем цвет:

И ниже значение EditText ставим на “YES”.

Как видим ниже, сервис сгенерировал для нас ресурсы:

Осталось только их скачать и добавить в проект. Жмем на кнопку “Download .ZIP” и переходим к следующему шагу.

Шаг 2. Прикручиваем кастомный стиль

Распакуем полученный архив и посмотрим, что в нем есть. Нас будут интересовать только папки Drawable:

Расфасуем наши ресурсы по папкам проекта. Тут всё просто, и в итоге выглядит вот так:

Структура имени файлов такова: [edittextstyle]_[textfield_activated]_[holo_light].[9].png

  1. [edittextstyle] – имя нашей темы;
  2. [textfield_activated] – полное название состояния;
  3. [holo_light] – имя родительской темы;
  4. [9] – номер ресурса в SDK.

Однако, само по себе приложение не поймет что нужно брать именно эти ресурсы и поэтому следует явно указать это. Создадим папку “drawable” а в ней файл “edittextstyle_edit_text_holo_light.xml” (если очень лень, то можно конечно всё это взять с архива.. но это же слишком просто, верно?)

Что нужно написать в этом файле? “Там уже всё написано” – скажите вы.. Но ведь следует в этом разобраться!

Как правило хорошего тона и юзабилити приложения, следует давать пользователю обратную связь, в нашем же случае это показать какой элемент сейчас активен. Для реализации такой обратной связи используется паттерн Selector. С уть Selector’а — это задание различного стилевого оформления для различных состояний выбираемого элемента.

Внутри Selector’a находятся элементы Item, а внутри Item – атрибуты, которые говорят, имеет ли элемент активное/фокусированное/запрещенное состояние и ссылку на соответствующий ресурс.

Ничего не работает?

Действительно, при запуске приложения ничего не изменится. Почему так? Потому что мы не указали элементам EditText на нашем Layout’е, что нужно использовать эти стили. Открываем activity_main.xml и дописываем в каждый элемент EditText следующий атрибут:

Проверим работу приложения:

Ура! Все работает, можно наградить себя печеньками 😉

Лайфхак

Что бы не потерять наш цвет и использовать его где то в других местах, я добавил значение в файле strings.xml

Если вы были внимательны, то должны были заметить, что сервис Android Holo Colors Generator позволяет кастомизировать цвета не только для элемента EditText, но также и для других элементов.

Конечно, это довольно таки простой способ кастомизации, существуют более серьезные методы решения этой задачи. Например можно все прорисовать с помощью графики:

Тут придется повозится больше, однако в таком случае у нас есть практически безграничные возможности отрисовки, но это уже совсем другая история… 🙂

Источник

Оцените статью