我遇到了一个textview的问题,其中我有一些应该左对齐的文本和一些应该正确对齐的文本。
这是我的尝试。
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);
这是textview的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"
/>
然而这不起作用。所有文本都左对齐。我在这里缺少什么?
答案 0 :(得分:4)
如果右侧文本不需要对边缘进行右对齐,则可以使用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);
如果您希望它移动到文本视图的右边缘附近,则可以使用全局布局侦听器在布局后设置Tab停止。然后,您可以使用textview的宽度在边缘附近设置一个tabstop。
如果你想让它正确对齐,你只需要创建一个扩展ReplacementSpan的类来为你证明文本的合理性。
答案 1 :(得分:0)
我自己走了这条路...不幸的是,从我的研究中我不相信单行文本可以有两个对齐跨度。您必须将其拆分为两个不同的TextView
对象。