2011-07-11 10 views
19

私は以下のようなTextViewを持っています。 このコードを使用して、テキストの一部の灰色を設定しました。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"のようなものは見つけられません。

答えて

-5

私の知る限り、これは不可能です。私は本当にそれらを2つの異なる分野として持つことを目指しています。データを分離しているようですが、灰色のテキスト(dictionaryName)のTextViewを個別に作成するのはなぜですか?

このような理由から、私はできる限りspannablesを使用しようとしました。

0

resultTextが常に右揃えになる場合は、テキストをスタイル付きスパニング可能文字列で右揃えにするのではなく、resultTextViewにgravity = "right"属性を追加します。これは、灰色のテキストがメインテキストとは別のテキストビュー内にあると仮定しています。結果のためのXMLで

(グレー)テキスト:

<TextView android:id="@+id/resultTextView" 
    android:gravity="right" 
    android:layout_width="fill_parent" /> 
+0

いいえ、つまり、黒いテキストは左揃え、灰色のテキストは右揃えです。私はそれを「マルチプルアラインメント」と呼びます。 :) – Emerald214

+0

結果テキストから黒のテキストを分離する必要があります(別々の2つのテキストビューがあります)。 –

49

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

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は、左側に相当します。

+4

これは間違いなく受け入れられた答えであるはずです!これは、Alignment.ALIGN_CENTERを使用してテキストをセンタリングする場合にも機能します。 – Brandon

+0

何らかの理由で、私はこれをTextViewで動作させることができません。すべての線が同じ位置にあります。 – Mahm00d

+7

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

2

テキストを複数の文字列に分割し、分割されたテキストビューに入れて、1つずつ並べる必要があると思います。

これが役に立ちます。

関連する問題