Получить текст из TextView отображаемый на экране

Допустим TextView содержит текст из 2тыс. символов, а на экране отображаются только 500 символов из-за большого размера шрифта, и если я вызываю getText().length, то получаю 2тыс. Как можно получить тот текст, который отображается на экране?


В displayed у меня хранится весь текст. А мне надо, чтобы в нем хранился текст только видимый на экране, а не весь текст что есть в textView

textView.post(new Runnable() {
    @Override
    public void run() {
        int start = textView.getLayout().getLineStart(0);
        int end = textView.getLayout().getLineEnd(textView.getLineCount() - 1);
       

        String displayed = textView.getText().toString().substring(start, end);
        Log.d("staend",displayed);
    }
}); 

`

Ответы (1 шт):

Автор решения: Sergei Buvaka

Вы можете получить начало и конец видимого текста в TextView и потом исходя из этих значений обрезать вашу строку. Код ниже показывает как это сделать:

int start = textView.getLayout().getLineStart(0);
int end = textView.getLayout().getLineEnd(textView.getLineCount() - 1);

String displayed = textView.getText().toString().substring(start, end);
→ Ссылка