Как разрешить пользователю выбирать текстовый диапазон в TextView (аналогично EditText)

У меня есть TextView который я хотел бы разрешить пользователю выбирать диапазон текста изнутри. TextView занимает всю ширину и высоту устройства (минус некоторое заполнение и заголовок вверху). В EditText если вы долго нажимаете, вы получаете наложение выбора, которое позволяет вам устанавливать выделение влево и вправо. Мне нужна эта функциональность в TextView . Я читал, что в API уровня 9 (2.3) (http://developer.android.com/sdk/android-2.3.html) есть новые элементы управления выбором текста, но мне трудно выполнить это. Я делаю это прямо сейчас:

 eic = new InputConnection( bookTextView ); eic.beginBatchEdit(); 

Но это не делает ничего примечательного. Кто-нибудь знает, как правильно использовать InputConnection ? Благодарю.

Изменить: мне не обязательно использовать то, что я пытаюсь сделать выше. В конечном итоге я хочу использовать TextView или EditText который выглядит и воспринимается как TextView и может выбирать текст с помощью перетаскивающего курсора. Затем я хотел бы манипулировать выбранным текстом с помощью различных параметров контекстного меню (или меню, которое появляется над выбранным текстом).

Solutions Collecting From Web of "Как разрешить пользователю выбирать текстовый диапазон в TextView (аналогично EditText)"

Вот идея. Добавьте EditText с фоном TextView. Вот пример.

 <EditText android:text=" This is not an editable EditText" android:id="@+id/EditText01" android:layout_width="wrap_content" android:textColor = "@android:color/white" android:editable = "false" android:cursorVisible="false" android:layout_height="wrap_content" android:background = "@android:drawable/dark_header"> </EditText> 

Добавьте это в свой xml вместо TextView

Вы можете включить Spannable хранилище TextView . См. Раздел Выделение текста в TextView или WebView для примера.

Смотрите также:

http://developer.android.com/reference/android/text/Spanned.html

После долгого интернет-серфинга, чтобы найти решение, я предпочел создать свой собственный класс

https://github.com/orionsource/SelectableTextViewer

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

Особенности цели:

  1. Прост в использовании – только один класс
  2. Поддержка текста и Html.fromHtml
  3. Может быть в ScrollView с правильными касаниями
  4. Курсоры можно переопределить
  5. Цвет выделения можно переопределить

Вы можете отобразить текст в WebView и включить выбор текста. Если вы хотите использовать только textview / edittext, вот ответ, который может вам помочь, и вот информация о классе Spannable, которая может помочь вам выполнить то, что вы хотите.

На самом деле, вам не нужно разрабатывать эту функцию самостоятельно. Вам просто нужно использовать EditText вместо TextView, пока вы установите для android: editable EditText значение false. Моя идея такая же, как у песчаных.

Мой код здесь, надеюсь, он может вам помочь:

https://stackoverflow.com/a/11026292/966405