2017-01-20 1 views
1

В настоящее время я создаю небольшое приложение для чтения. Для отображения текста есть текстовое изображение. Мы можем добавлять закладки и сохранять их в виде списка. Я хочу щелкнуть по списку и выделить или выделить индекс закладки в текстовом представлении. Я могу получить bookmark_index. Есть метод, например, textview.setSelect(Start,Length)? или Любая библиотека может это сделать? ThankКак выбрать или выделить TextView программно в Android?

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

enter image description here

ответ

2

Использование Spannable

Spannable WordtoSpan = new SpannableString("partial colored text");   
WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), startIndex, stopIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
textView.setText(WordtoSpan); 
+0

Спасибо за идею, я попробую. Я просто нашел его на http://stackoverflow.com/a/2120190/5241603. –

+1

Да, попробуйте. Надеюсь, он выполнит ваше требование. – Nitesh

+0

Он отлично работает. –

1

Это зависит от минимальной Android версии, которые вы хотели бы поддержать.

В 3.0+ (уровень API 11 и выше) у вас есть атрибут textIsSelectable в TextView, который позволяет это поведение. Например:

<TextView 
    android:id="@+id/deviceIdTV" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textIsSelectable="true" 
    android:text="" /> 

Или вы можете реализовать эту функцию самостоятельно, используя промежутки, как показано ниже.

TextView myTV = (TextView)findViewById(R.id.textView1); 
String textString = "StackOverFlow Rocks!!!"; 
Spannable spanText = Spannable.Factory.getInstance().newSpannable(textString); 
spanText.setSpan(new BackgroundColorSpan(0xFFFFFF00), 14, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
myTV.setText(spanText); 
+0

Спасибо, я попробую. –

+1

Это сработало. Спасибо. –

+1

приятно это слышать !! наслаждайтесь кодированием :) –