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); 
Intereting Posts
Как интегрировать OpenCV Manager в Android-приложение Автоматическое публикация приложения Beta Android в магазине Google Play Как создать простой Java-класс из WSDL? ImageView пикселирован на старых устройствах Android «RequestLayout () неправильно вызван …» ошибка на Android 4.3 Android-страница Curl animation Камера – предварительные изменения после начала записи видео Где хранятся чертежи или клипарт из файла android.R.drawable? Вопросы о поддержке calabash-android в Android Studio: Ruby, Редактирование функций и шагов, Запуск тестов Ошибка ориентации переключения: Ошибка фрагментации – Дублирующий идентификатор, тег или родительский идентификатор 0x0 ImageView adjustViewBounds не работает с Relative Layout Ошибка Android studio v2.2.2 (27,17) не удалось разрешить junit: junit4.12 Является ли законным вызывать метод запуска дважды в одной теме? Не удается записать файл в эмулятор Android. Импортировать библиотеку в Eclipse без jar