Як вимкнути EditText в Android


80

Як можна відключити введення тексту в EditTextполі в Android?


1
Вимкнути клавіатуру при введенні в EditText?
Картік Домадія

Є два поля editText. Перше - це введення електронної пошти. Якщо електронне повідомлення є дійсним, то слід увімкнути друге поле editText. Але проблема полягає в тому, що ви вводите недійсний електронний лист і натискаєте на наступну кнопку на програмній клавіатурі, щоб перейти до друге текстове поле і я можу вводити дані хоча б я зробив edittext.setEnabled (false). я використовую android 2.3.1
aj10

Відповіді:


42

Я думаю, що це помилка в android .. Це можна виправити, додавши цей патч :)
Перевірте ці посилання 1 і 2

Сподіваюся, це буде корисним.


112
Для тих, хто воліє бачити код прямо тут, а не використовувати гіперпосилання:, editText.setEnabled(false);у поєднанні з editText.setFocusable(false);досягне цього.
Mxyk

8
Те саме працює з XML: android:enabled="false"і android:focusable="false". Спасибі, хлопці!
желе

64

ви можете використовувати, EditText.setFocusable(false)щоб вимкнути редагування,
EditText.setFocusableInTouchMode(true)щоб увімкнути редагування;


5
Це було моє питання. Я припустив, що після того, як setFocusable(false)я міг просто перевернути setFocusable (true) ... не так. Налаштування setFocusableInTouchMode(true)зробило для мене фокус.
timgcarlson,


14

Припускаючи editText, що ви EditTextзаперечуєте:

editText.setEnabled(false);

11

Ви можете спробувати наступний спосіб:

 private void disableEditText(EditText editText) {
    editText.setFocusable(false);
    editText.setEnabled(false);
    editText.setCursorVisible(false);
    editText.setKeyListener(null);
    editText.setBackgroundColor(Color.TRANSPARENT); 
 }

Увімкнено EditText:

Увімкнено EditText

Вимкнено редагування тексту:

Вимкнено EditText

Це працює для мене, і сподіваюся, це допоможе вам.


хороша відповідь, але її можна покращити, видаливши рядок, у якому змінюється колір фону, і додати editText.setKeyListener (null);
Сайед Раза Мехді,

10

Просто встановіть для фокусуючої властивості вашого edittext значення "false" і все готово.

<EditText
        android:id="@+id/EditTextInput"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:gravity="right"
        android:cursorVisible="true">
    </EditText>

Наведені нижче варіанти не працюють

У коді:

editText.setEnabled(false); Або в XML: android:editable="false"



6

Увімкнути:

private void enableEditText() {
    mEditText.setFocusableInTouchMode(true);
    mEditText.setFocusable(true);
    mEditText.setEnabled(true);
}

Вимкнути:

private void disableEditText() {
    mEditText.setEnabled(false);
    mEditText.setFocusable(false);
    mEditText.setFocusableInTouchMode(false);
}

2

Наведений нижче код вимикає EditText в android

editText.setEnabled(false);

просто встановіть для фокусуючої властивості вашого edittext значення "false" і все готово. <! - begin snippet: js hide: false -> <! - language: lang-html -> <EditText android: id = "@ + id / EditTextInput" android: layout_width = "fill_parent" android: layout_height = "wrap_content" android: focusable = "false" android: gravity = "right" android: cursorVisible = "true"> </EditText> <! - end snippet ->
ramit girdhar

2

Ви можете писати, edittext.setInputType(0)якщо хочете показати текст редагування, але не вводити жодних значень


2
edittext.setFocusable(false); 
edittext.setEnabled(false);

InputMethodManager imm = (InputMethodManager)
  getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
  //removes on screen keyboard


1

За моїми словами ... якщо ви вже оголосили edittextу файлі XML і встановили властивість у файлі XML "android:enabled=false"і відключили його під час виконання до нього на той час у файлі Java, додавши лише 2 або 3 рядки

  1. Спочатку створіть об’єкт
  2. Заявити EditText et1;
  3. Отримати за ідентифікатором

    et1 = (EditText) FindViewById(R.id.edittext1);
    et1.setEnabled(false);

Ви можете ввімкнути або вимкнути кожен елемент керування під час виконання за допомогою файлу Java та часу проектування за допомогою файлу XML.


0

Напишіть це по батькові:

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

Приклад:

<RelativeLayout 
android:id="@+id/menu_2_zawezanie_rl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/menu_2_horizontalScrollView"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
android:orientation="horizontal"
android:background="@drawable/rame">

<EditText
    android:id="@+id/menu2_et"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/menu2_ibtn"
    android:gravity="center"
    android:hint="@string/filtruj" >
</EditText>
<ImageButton
    android:id="@+id/menu2_ibtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:background="@null"
    android:src="@drawable/selector_btn" />


0

editableВластивість XML застаріла, оскільки API LEVEL 15 .

Вам слід використовувати inputTypeвластивість зі значенням none. Але є помилка, яка робить цю функцію марною.

Тут ви можете стежити за станом проблеми.




-1

Клацніть правою кнопкою миші текстову область і зніміть прапорець, який можна редагувати:

введіть тут опис зображення


Ласкаво просимо до Stack Overflow, Nuwan Bandara. Ваша відповідь пов’язана з JTextArea, а не з EditText, що з Android Framework. Навряд чи ви даєте відповідь на це питання.
Ігор Ескодро
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.