Получить текущий видимый текст в текстовом представлении

У меня есть длинный отрывок в TextView, который окружен ScrollView. Есть ли способ найти текущий видимый текст?

Я могу найти количество строк, высоту строки в текстовом представлении, а также прокрутку и прокрутку из прокрутки, но найти связь с текущим отображаемым текстом. Пожалуйста помоги! Спасибо.

23
задан John 26 December 2011 в 15:17
поделиться

1 ответ

Использование textView.getLayout (). GetEllipsisStart (0) работает только в том случае, если android: singleLine = "true"

Вот решение, которое будет работать, если установлен android: maxLines:

public static String getVisibleText(TextView textView) {
    // test that we have a textview and it has text
    if (textView==null || TextUtils.isEmpty(textView.getText())) return null;
    Layout l = textView.getLayout();
    if (l!=null) {
        // find the last visible position
        int end = l.getLineEnd(textView.getMaxLines()-1);
        // get only the text after that position
        return textView.getText().toString().substring(0,end);
    }

    return null;
}

Помните: это работает после того, как представление уже загружено.

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

textView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            textView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            Log.i("test" ,"VisibleText="+getVisibleText(textView));
        }
    });
1
ответ дан 29 November 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: