Как создать выделенный текстовый вид, такой как Adobe Reader или Medium? - PullRequest
0 голосов
/ 25 марта 2019

ребята.Мне нужно немного вдохновения прямо здесь.Я хочу создать приложение с функцией выделения, как на скриншоте ниже.Но я понятия не имею, как это сделать.Я думаю, что Spannable TextView не может просто помочь мне.У тебя есть идея?Спасибо.

Пример выделенного меню в Medium App

1 Ответ

0 голосов
/ 26 марта 2019

Вы можете использовать SpannableString

Для выделения конкретного текста используйте этот метод.

private void highlightString(String input) {
//Get the text from text view and create a spannable string
SpannableString spannableString = new SpannableString(mTextView.getText());
//Get the previous spans and remove them
BackgroundColorSpan[] backgroundSpans = spannableString.getSpans(0, spannableString.length(), BackgroundColorSpan.class);

for (BackgroundColorSpan span: backgroundSpans) {
    spannableString.removeSpan(span);
}

//Search for all occurrences of the keyword in the string
int indexOfKeyword = spannableString.toString().indexOf(input);

while (indexOfKeyword > 0) {
    //Create a background color span on the keyword
    spannableString.setSpan(new BackgroundColorSpan(Color.YELLOW), indexOfKeyword, indexOfKeyword + input.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

    //Get the next index of the keyword
    indexOfKeyword = spannableString.toString().indexOf(input, indexOfKeyword + input.length());
}

//Set the final text on TextView
mTextView.setText(spannableString);}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...