Подтвердить что ты не робот

Как разрешить пользователю выбирать текстовый диапазон в 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 и может выбирать текст с помощью перетаскивающего курсора. Затем я хотел бы манипулировать выбранным текстом с различными параметрами контекстного меню (или меню, которое появляется над выбранным текстом).

4b9b3361

Ответ 1

Вот идея.. Добавьте 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

Ответ 3

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

https://github.com/orionsource/SelectableTextViewer

enter image description here

Функции цели:

  • Простота использования - только один класс
  • Поддержка текста и Html.fromHtml
  • Может быть в ScrollView с правильными касаниями
  • Курсоры могут быть переопределены
  • Цвет выделения можно переопределить

Ответ 4

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

Ответ 5

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

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

fooobar.com/info/267497/...