2

私がやりたいのは、長いテキストをページに分割することです。これにより、ユーザーが[次へ] / [前へ]ボタンを押したときに、1つのテキストビューに1つずつ表示できます。最後に表示された文字インデックスを知る必要がありますが、それはそれほど単純ではありません。

私はこれを試しました:

int start = textView.getLayout().getLineStart(0);
int end = textView.getLayout().getLineEnd(textView.getLineCount() - 1);

String displayed = textView.getText().toString().substring(start, end);

frrom LINK

ただし、getLayoutはnullを返します

また、getWidth / getHeightを使用しても、「onCreate」関数で0が返されるため、役に立ちません。

助けてくれてありがとう!

4

2 に答える 2

3

他の方向から問題に取り組む方が理にかなっているかもしれません:あなたは長いStringテキストを持っています。次に、ページにどれだけ収まるかを決定し、ページStringごとに1つずつ、複数のサブストリングの配列に分割します。次に、ページインデックスをどこかに保存し、Stringテキスト全体をサブストリングに分割したときに作成した配列へのインデックスとして使用できます。

これは、ページに収めることができるテキストの量を見つけるアルゴリズムがあることを前提としています。この質問を見てください。

于 2012-11-05T16:10:38.350 に答える
2

私は、ページ数にわたって長い文字列を表示するための非常に効率的な方法を考え出しました。-長いテキストをテキストビューに表示し、スクロールを無効にします-次に、レイアウト内の行と単一画面の行を見つけます。したがって、長い文字列がまたがる画面(ページ)の数がわかります-その後、ユーザーがクリックするたびにボタンをクリックして次のページに移動するか、画面をスワイプして次のページに移動します。次に、TexView.scrollTo()関数を使用して、行数(画面上の行数)に移動します。だから次のページに移動するのと同じくらい良くなります

于 2014-01-03T22:27:23.210 に答える