1

左揃えにするテキストと右揃えにするテキストがあるテキストビューに問題があります。

これが私の試みです。

String LeftText = "LEFT";
String RightText = "RIGHT";


String resultText = LeftText + "  " + RightText;
SpannableString styledResultText = new SpannableString(resultText);
styledResultText.setSpan(new AlignmentSpan.Standard(Alignment.ALIGN_OPPOSITE), LeftText.length() + 1, LeftText.length() + 2 + RightText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(styledResultText);

そして、これがテキストビューのxmlです。

<TextView
    android:id="@+id/titleBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" 
/>

ただし、これは機能していません。すべてのテキストが左揃えになっています。ここで何が欠けていますか?

4

2 に答える 2

4

rightText をエッジに対して右揃えにする必要がない場合は、 TabStopSpan を使用して問題を簡単に解決できます。

final TextView tv = ...
int column = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
                (float) 200.0, getResources().getDisplayMetrics());

SpannableStringBuilder textspan = new SpannableStringBuilder("Charges\nPrice\t$25.00\nShipping\t$155.08\nTax\t$5.11\n");
textspan.setSpan(new TabStopSpan.Standard(column), 0, textspan.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(textspan);

テキストビューの右端近くに移動したい場合は、グローバルレイアウトリスナーを使用してレイアウト後にタブストップを設定できます。次に、テキストビューの幅を使用して、端の近くにタブストップを設定できます。

右揃えにしたい場合は、テキストを正当化する ReplacementSpan を拡張するクラスを作成するだけです..

于 2013-08-09T17:21:35.443 に答える
0

私は自分自身でこの道をたどりました...残念ながら、私の調査では、テキストの 1 行に 2 つの配置スパンを設定することは可能ではないと考えています。TextView2 つの異なるオブジェクトに分割する必要があります。

于 2013-01-27T21:59:00.713 に答える