Android: Как сделать TextView доступным для редактирования?

Как я могу разрешить пользователю редактировать TextView ? Конечно, я могу использовать EditText вместо этого, но я не знаю, как его настроить, а также я прочитал в документации на Android, что TextView может быть доступен для редактирования. Поэтому я попробовал это:

 <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="80sp" android:text="MyText" android:editable="true" android:singleLine="true" android:inputType="text" android:focusable="true" android:clickable="true" android:cursorVisible="true"/> 

Но он по-прежнему выглядит как обычный TextView . Кто-нибудь знает, что я пропустил? Или, может быть, как настроить EditText чтобы он выглядел как TextView : без границ и фона?

Я знаю, что вы не хотите использовать EditText но очень просто сделать его похожим на TextView .

 <EditText android:id="@+id/Id" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" > </EditText> 

Вы также можете использовать android:background="@null" .

Редактировать:

TextView делает его доступным для редактирования (с некоторыми ограничениями).

Если вы установили android:editable="true" вы можете получить доступ к TextView через D-pad, или вы можете добавить android:focusableInTouchMode="true" чтобы иметь возможность сосредоточиться на прикосновении.

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

Вы можете подделать редактируемый Textview. Вам просто нужно скрыть текст, когда вы касаетесь его (сделайте его «кликабельным»), замените его на EditText и покажите его снова, когда редактирование закончено.

TextView определяет все возможности, найденные в EditText, но не имеет встроенной поддержки для них. Некоторые основные отличия в EditText:

A ) Метод getDefaultEditable () возвращает true . Это только знак, который определяет этот подкласс как редактируемый.

Б) Метод движения . Является объектом, который управляет поведением курсора (позиция, перемещение назад / вперед – это может измениться на некоторых языках и т. Д.). В противоположность, TextView просто возвращает значение null, потому что в любом случае это не курсор.

C) Метод CharSequence getText () . TextView возвращает для него одну String. В EditText используется конкретная реализация последовательности символов (редактируемая), которая представляет собой изменяемый текстовый буфер.

Из-за этого мы не можем думать о TextView как сдержанный EditText. TextView набросает интерфейс редактирования, но не реализует сам.

Если вам нужен текстовый компонент, который вы иногда можете отключить, вы ищете компонент EditText.

Вы можете сделать свой TextView доступным, добавив эти строки

 tv.setFocusable(true); tv.setEnabled(true); tv.setClickable(true); tv.setFocusableInTouchMode(true); 
  tv.setCursorVisible(true); tv.setFocusableInTouchMode(true); tv.requestFocus(); tv.setEnabled(true);