3

私は ScrollView 内に TextView を持っています。TextView は大きなテキストで満たされ、そのテキストの一部だけがいつでも画面に表示されます。ここで、(プログラムによって) テキストの一部を強制的にユーザーに表示したいと考えています。たとえば、私のテキストは次のとおりです。

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut id ante tellus. Nulla facilisi。Sed gravida fringilla velit, non sollicitudin tellus egestas non. Cras congue、nulla id bibendum tempus、dui dui blandit elit、elementum dictum dolor eros et mi. Nullam leo tellus、aliquet vel tincidunt sed、suscipit nec dui。Nunc dapibus、odio vestibulum hendrerit vestibulum、lorem orci dictum arcu、quis porttitor lorem libero sit amet odio. Sed imperdiet viverra diam, eu porttitor ipsum fringilla et. Suspendisse consectetur sapien ac felis tincidunt dictum. Suspendisse ultrices porta dignissim. nibh sed nisi facilis dignissim non ut tortor の Maecenas. Pellentesque eleifend tempus sem, sit amet mattis arcu auctor id. tortor rutrum diam vestibulum adipiscing でのビバムス。サスペンディス・ポテンティ。整数 sollicitudin laoreet enim ac suscipit. Quisque convallis facilisis pharetra。

太字の単語 (この例ではtortor ) を強制的にユーザーに表示したい (おそらく、テキストビューを正しい値で垂直方向にスクロールすることによって)。これを行う方法はありますか?

編集:単語を太字にしたくありません! 私の要求を明確にするために質問が更新されました。

4

3 に答える 3

1

それはかなりの努力ですが、android.graphics.Paint#measureText(...)respを使用します。breakText(...)目的の単語を表示するためにスクロールする必要がある方法を計算できるはずです。フォント、フォントサイズ、テキストを表示するビューのサイズなどを考慮する必要があります。

于 2012-08-27T18:21:20.213 に答える
1

特定の単語にスクロールする 1 つの方法を次に示します。

public void scrollToWord(String string) {
    TextView textView = (TextView) findViewById(R.id.text1);
    String text = textView.getText().toString();

    // Find the first occurrence of the word 
    int position = text.indexOf(string);
    // Calculate how far in the word is: 30%, 40%, 73% 
    int percent = (int) (position / (double) text.length() * 100);
    // Calculate how far to scroll
    int y = textView.getHeight() * percent;

    // Finally scroll
    ((ScrollView) textView.getParent()).scrollTo(0, y);
}

これについて2つのメモがあります:

  1. これは最初の出現までスクロールするだけですがString.indexOf(string, start)、2 番目、3 番目などに変更して見つけるのは簡単です。

  2. アプリが起動したらすぐにこの位置にスクロールしたい場合は、 onResume() が終了するまで待つ必要があります。しかし、これには方法がありません... Handler を使用することをお勧めします。必要な場合は、その方法をお手伝いします。

それが役立つことを願っています!

于 2012-08-27T18:53:15.750 に答える
0

太字オプションを指定した html タグを使用して、その特定の単語を太字にすることができます。

于 2012-08-27T18:13:18.433 に答える