Как определить количество строк, видимых в TextView?

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/logs_text"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>

String s = "very big text"
TextView logText = (TextView) view.findViewById(R.id.logs_text);
logText.setText(s);     

Ответы

Ответ 1

android.text.Layout содержит эту информацию и многое другое. Используйте textView.getLayout().getLineCount() для получения количества строк.

Будьте осторожны, если getLayout() может возвращать null, если вызывается до завершения процесса компоновки. Вызовите getLayout() после onGlobalLayout() или onPreDraw() из ViewTreeObserver. Например.

textView.getViewTreeObserver().addOnPreDrawListener(() -> {
    final int lineCount = textView.getLayout().getLineCount();
});

Если вам нужен только видимый счет строки, вы, вероятно, должны использовать подход, упомянутый в ответе ниже:

Есть ли способ получить видимое количество или диапазон видимых строк TextView?

Ответ 2

Попробуйте что-то вроде этого:

        <EditText
            android:id="@+id/edt_obs"
            android:layout_width="0dip"
            android:layout_weight="75"
            android:layout_height="wrap_content"
            android:layout_marginBottom="2dip"
            android:inputType="textCapCharacters|textMultiLine"
            android:scrollHorizontally="false" 
            android:gravity="top|left"
            android:lines="2" 
            android:singleLine="false"
            android:background="@android:drawable/edit_text"
            android:textColor="@color/Black"
            android:textCursorDrawable="@color/Black"
        />

С

            android:lines="2" 

My EditText получает пробел для 2 строк, после этого поле получает прокрутку. Не забудьте использовать

            android:singleLine="false"

Я не тестировал TextView, но думаю, что это сработает.