Как разрешить пользователю выбирать текстовый диапазон в 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
и может выбирать текст с помощью перетаскивающего курсора. Затем я хотел бы манипулировать выбранным текстом с различными параметрами контекстного меню (или меню, которое появляется над выбранным текстом).
Ответы
Ответ 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
Ответ 2
Вы можете включить хранилище TextView
Spannable. См. Выделение текста в TextView или WebView для примера.
См. также:
http://developer.android.com/reference/android/text/Spanned.html
Ответ 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/...