Android でのテキストのページ分割
問題:
Android の TextView コントロール内のテキストのページ分割テキストをいつどのようにページに分割するかを決定する必要があります。 TextView の改行アルゴリズムと改ページアルゴリズムには簡単にアクセスできないため、これは困難な場合があります。そのため、実際の表示上でテキストがどこで終わるかを識別することが困難になります。
解決策:
ViewTreeObserver を使用して表示されるテキスト範囲を監視することにより、ビューの高さ内に完全に収まる最後の行を追跡することができます。これにより、行の累積高さに基づいてページを作成できるようになり、利用可能な垂直方向のスペースを超える行が見つかったときにページが分割されるようになります。
アルゴリズム:
実装:
このアルゴリズムを実装するには、次のコードを使用します:
// 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 サイトの他の関連記事を参照してください。