22

以下のような TextView があります。このコードを使用して、テキストの一部に灰色を設定しました。

// Prepare result text.
final String resultText = text + "\n\n" + dictionaryName;
final SpannableString styledResultText = new SpannableString(resultText);
styledResultText.setSpan(new ForegroundColorSpan(Color.GRAY), text.length() + 2, text.length() + 2 + dictionaryName.length(), 0);
resultTextView.setText(styledResultText);

今、私はそれに合わせて設定したいと思います。実行する方法?Android には、アライメント用のスパン クラスがありません。「AlignmentSpan」のようなものは見つかりません。

ここに画像の説明を入力

4

3 に答える 3

51

答えるのが本当に遅いですが、少なくとも誰かを助けるかもしれないと思います。これをコードに追加します。

styledResultText.setSpan(
    new AlignmentSpan.Standard(Alignment.ALIGN_OPPOSITE), 
    text.length() + 2,
    text.length() + 2 + dictionaryName.length(), 
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
);

Alignment.ALIGN_OPPOSITE は右側に相当します。

Alignment.ALIGN_NORMAL は左側に相当します。

\n注: これは、左揃えと右揃えのテキストの間に少なくとも 1 つの改行文字 ( ) がある場合にのみ機能します。

于 2012-07-23T12:17:49.397 に答える
2

テキストを複数の文字列に分割し、それらを別々のテキストビューに入れてから、1つずつ整列する必要があると思います。

お役に立てれば。

于 2012-12-12T16:14:02.667 に答える
0

resultTextが常に右揃えになる場合は、resultTextViewスタイル設定されたスパン可能な文字列でテキストを右揃えにするのではなく、gravity="right"属性をに追加します。これは、灰色のテキストがメインテキストとは別のTextView内にあることを前提としています。

結果(灰色)テキストのxml:

<TextView android:id="@+id/resultTextView" 
    android:gravity="right" 
    android:layout_width="fill_parent" />
于 2011-07-11T17:39:13.680 に答える