Android выделите текст

Я работаю над приложением книги. В этом приложении пользователь должен уметь читать и выделять текст. Я много искал по интернету и использовал веб-просмотр, просмотр текста, простой текст, но безуспешно. Как я могу это сделать? Уметь выделять текст любым способом.

3 ответа

Это работает для вас,

SpannableString str = new SpannableString("Highlighted. Not highlighted.");
 str.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, 11, 0); 
 textView.setText(str);

Попробуйте эту библиотеку Android TextHighlighter.

Реализации

TextView.setText() получает параметр как Spannable не только CharacterSequence, SpannableString имеет метод setSpan() что позволяет применять стили.

См. Список форм прямого подкласса CharacterStyle https://developer.android.com/reference/android/text/style/CharacterStyle.html

  • Пример задания цвета фона и цвета переднего плана для слова "Hello" в "Hello, World"
Spannable spannable = new SpannableString("Hello, World");
// setting red foreground color
ForegroundSpan fgSpan = new ForegroundColorSpan(Color.red);
// setting blue background color
BackgroundSpan bgSpan = new BackgroundColorSPan(Color.blue);

// setSpan requires start and end index
// in our case, it's 0 and 5
// You can directly set fgSpan or bgSpan, however,
// to reuse defined CharacterStyle, use CharacterStyle.wrap()
spannable.setSpan(CharacterStyle.wrap(fgSpan), 0, 5, 0);
spannable.setSpan(CharacterStyle.wrap(bgSpan), 0, 5, 0);

// apply spannableString on textview
textView.setText(spannable);

Есть больше ответов по этой ссылке

/** This is the way you can use Matcher, i think you are going to type in editext and textview's text should be highlioghted so this is the way...    

 search_icon.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Searched_text.setVisibility(View.VISIBLE);

                   String tvt = textView_searching.getText().toString();
                    String ett = Searched_text.getText().toString();
                    SpannableStringBuilder sb = new SpannableStringBuilder(tvt);
                    Pattern p = Pattern.compile(ett, Pattern.CASE_INSENSITIVE);
                    Matcher m = p.matcher(tvt);
                    while (m.find()){
                        //String word = m.group();
                        //String word1 = notes.substring(m.start(), m.end());

                        sb.setSpan(new ForegroundColorSpan(Color.RED), m.start(), m.end(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
                        sb.setSpan(new BackgroundColorSpan(Color.YELLOW), m.start(), m.end(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
                    }
                    textView_searching.setText(sb);

                }
            });
Другие вопросы по тегам