Как сделать EditText доступным, но не редактируемым на Android Ice Cream Sandwich?

У меня есть ListView в Activity, и в каждом элементе я вставляю EditText для отображения моего текста. Мне нужно перетащить дескриптор, чтобы выбрать текст и скопировать текст, но не могу редактировать текст. В Android ICS, как я могу это сделать?

Ответы

Ответ 1

Я решил эту проблему.
Просто установите TextView следующим образом:

text.setTextIsSelectable(true);

Ответ 2

text.setTextIsSelectable(true) требуется API 11. Для тех, кто использует более низкие API: В xml используйте:

android:inputType="none"
android:textIsSelectable="true"

Это сделает ваш EditText неизменным, но можно выбрать.

Ответ 3

Я думаю, вы можете переопределить метод onKeyDown(), чтобы он ничего не делал, но возвращал true. Он должен улавливать нажатия клавиш с клавиатуры и отменять их, прежде чем они смогут перейти в текст в EditText.

Вы также можете попытаться настроить редактируемое на false, как это

android:editable="false"

в EditText в вашем XML-макете. Однако я не уверен, что это позволит вам выделять и копировать, но это стоит того.

Ответ 4

Althouth android:editable устаревший, и Lint предлагает использовать inputType, он, похоже, не работает. Таким образом, android:editable="false", по-видимому, является наилучшим решением для всех версий Android.

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:editable="false"
    android:textIsSelectable="true"
    tools:ignore="Deprecated" />