0

textView が表示できる数直線を知りたいです。1行で数字を取得できます

int maxVisibleChars =  textView.getPaint().breakText(text,
                    true, textView.getMeasuredWidth(), null);

しかし、textView のサイズ変更は画面の解像度に依存するため、textView が適切に表示できる行数はわかりません。
私はそれを知る必要があります。ありがとうございました

4

1 に答える 1

7

このコードを使用して、テキストビューの行数を確認します。

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView textView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.textView1);
        int totalLines = textView.getLineCount();

        ViewTreeObserver vto = this.textView.getViewTreeObserver();
        vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

            public void onGlobalLayout() {
                ViewTreeObserver obs = textView.getViewTreeObserver();
                obs.removeGlobalOnLayoutListener(this);
                System.out.println("Line Count is : " + textView.getLineCount());

            }
        });

    }
}

activity_main.xml

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

    <TextView
        android:id="@+id/textView1"
        android:layout_width="300dp"
        android:layout_height="500dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="I have a full-screen TextView holding a long Spanned that requires scrolling. The TextView&apos;s getLineCount() gives me the total number of lines used for the entire block of text but I&apos;d like to know how many lines of text are currently visible on the screen. "
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

スクロール付きの Textview を使用していて、画面に表示されている行数 (合計行数ではない) を知る必要がある場合、

int height    = myTextView.getHeight();
int scrollY   = myTextView.getScrollY();
Layout layout = myTextView.getLayout();

int firstVisibleLineNumber = layout.getLineForVertical(scrollY);
int lastVisibleLineNumber  = layout.getLineForVertical(scrollY+height);
于 2012-08-24T09:50:08.900 に答える