ホームページ > Java > &#&チュートリアル > Android の TextView コントロール内でテキストをページ分割するにはどうすればよいですか?

Android の TextView コントロール内でテキストをページ分割するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-09 18:26:02
オリジナル
1012 人が閲覧しました

How to Paginate Text within a TextView Control in Android?

Android でのテキストのページ分割

問題:

Android の TextView コントロール内のテキストのページ分割テキストをいつどのようにページに分割するかを決定する必要があります。 TextView の改行アルゴリズムと改ページアルゴリズムには簡単にアクセスできないため、これは困難な場合があります。そのため、実際の表示上でテキストがどこで終わるかを識別することが困難になります。

解決策:

ViewTreeObserver を使用して表示されるテキスト範囲を監視することにより、ビューの高さ内に完全に収まる最後の行を追跡することができます。これにより、行の累積高さに基づいてページを作成できるようになり、利用可能な垂直方向のスペースを超える行が見つかったときにページが分割されるようになります。

アルゴリズム:

  1. テキスト行を繰り返し処理し、行の下部がビューの高さを超えているかどうかを確認します。
  2. 超えている場合は、新しいページを分割し、最後のページの上部に基づいて新しい累積高さの値を計算します。前のページに収まらなかった行とビューの高さを加えたものです。

実装:

このアルゴリズムを実装するには、次のコードを使用します:

// Setup code
ViewTreeObserver vto = txtViewEx.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        ViewTreeObserver obs = txtViewEx.getViewTreeObserver();
        obs.removeOnGlobalLayoutListener(this);
        height = txtViewEx.getHeight();
        scrollY = txtViewEx.getScrollY();
        Layout layout = txtViewEx.getLayout();
        firstVisibleLineNumber = layout.getLineForVertical(scrollY);
        lastVisibleLineNumber = layout.getLineForVertical(height + scrollY);
    }
});
ログイン後にコピー

注:

このソリューションは、行の高さと文字間隔を考慮しながらテキストを効率的にページ分割します。特殊文字や動的なテキストの変更も処理します。

以上がAndroid の TextView コントロール内でテキストをページ分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート