EditText не редактируется - PullRequest
       12

EditText не редактируется

41 голосов
/ 27 февраля 2012

Я пытаюсь поместить EditText как недоступный для редактирования с помощью этого кода:

<EditText android:id="@+id/outputResult"
          android:inputType="text"
          android:editable="false"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/result" />

Мне пришлось добавить это для недоступности для редактирования

android:focusable="false" 

Я что-то не так делаю?

Большое спасибо

Ответы [ 9 ]

119 голосов
/ 27 февраля 2012

android:editable="false" должно работать, но устарело , вместо этого следует использовать android:inputType="none".

В качестве альтернативы, если вы хотите сделать это в коде, вы можете сделать это:

EditText mEdit = (EditText) findViewById(R.id.yourid);
mEdit.setEnabled(false);

Это также жизнеспособная альтернатива:

EditText mEdit = (EditText) findViewById(R.id.yourid);
mEdit.setKeyListener(null);

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

EDIT: Изменил некоторую информацию, поскольку я обнаружил, что android:editable устарела, и выследует использовать android:inputType="none", но в коде Android есть ошибка;Поэтому, пожалуйста, проверьте это .

7 голосов
/ 30 августа 2017

Если вы хотите сделать EditText недоступным для редактирования из кода:

void disableInput(EditText editText){
    editText.setInputType(InputType.TYPE_NULL);
    editText.setTextIsSelectable(false);
    editText.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v,int keyCode,KeyEvent event) {
                return true;  // Blocks input from hardware keyboards.
        }
    });
}

Если вы хотите удалить горизонтальную линию вашего EditText, просто добавьте:

editText.setBackground(null);

Если вы хотите разрешить пользователям копировать содержимое EditText, используйте:

editText.setTextIsSelectable(true);
7 голосов
/ 19 мая 2017
 <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editTexteventdate"
            android:background="@null"
            android:hint="Date of Event"
            android:textSize="18dp"
            android:textColor="#fff"
            android:editable="false"
            android:focusable="false"
            android:clickable="false"

            />

Добавить это

android: editable = "false"

android: focusable = "false"

android: clickable ="ложь"

его работа для меня

5 голосов
/ 23 октября 2018

Если вы действительно хотите использовать editText, а не textView, рассмотрите возможность использования этих трех:

android:focusable="false"

android:clickable="false"

android:longClickable="false"

EDIT: атрибут «longClickable» отключает длительные нажатия, которые вызывают «Вставить» иили «Выбрать все», чтобы они отображались в виде всплывающей подсказки.

5 голосов
/ 14 марта 2018

Полагаю, я опоздал, но используйте следующее, чтобы заставить это работать:

 android:inputType="none"
 android:enabled="false"
3 голосов
/ 22 марта 2018

Добавьте строку ниже в текстовом редакторе youe xml.

android:editable="false"
android:focusable="false"
android:clickable="false"

Это работает для меня

2 голосов
/ 29 августа 2018

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

EditText edtText = (EditText) findViewById(R.id.yourEditTextId);

edtText.setEnabled(false);

также вы можете использовать это в своем XML-файле.

1 голос
/ 25 марта 2018

У меня тоже была эта проблема.

Я сделал это:

<EditText
    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:id="@+id/yourid"
    android:editable="false"
    android:inputType="none" />
0 голосов
/ 19 июля 2019

Мое требование состояло в том, чтобы иметь внешний вид и текст редактирования и открывать всплывающее окно по его щелчку, но включение в качестве значения false не позволит прослушивать щелчок по нему.Так я и сделал.

 <EditText
        android:id="@+id/tvCustomerAge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minWidth="80dp"
        android:layout_alignParentEnd="true"
        android:drawableRight="@drawable/arrow_down"
        android:inputType="none"
        android:focusable="false"
        android:clickable="true"
        tools:text="24"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...