web-dev-qa-db-ja.com

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);     
19
umni4ek

Android.text.Layout には、この情報などが含まれています。行数を取得するには、textView.getLayout().getLineCount()を使用します。

レイアウトプロセスが完了する前に呼び出された場合、getLayout()nullを返す可能性があることに注意してください。 ViewTreeObservergetLayout()またはonGlobalLayout()の後にonPreDraw()を呼び出します。例えば。

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

表示される行数だけが必要な場合は、おそらく以下の回答で述べられているアプローチを使用する必要があります。

TextViewの表示行数または範囲を取得する方法はありますか?

20