TextView中部分左对齐和部分右对齐的文本。 为什么这不起作用?

我遇到了一个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。

  

但是这不起作用。 所有文本都左对齐。 我在这里想念的是什么?

如果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); 

如果要将其移动到文本视图的右边缘附近,可以使用全局布局侦听器在布局后设置Tab停止。 然后,您可以使用textview的宽度在边缘附近设置一个tabstop。

如果你想要正确对齐你只需要创建一个扩展ReplacementSpan的类,它将为你certificate文本的合理性。

我自己走了这条路…不幸的是,从我的研究中我不相信可以为一行文本设置两个对齐跨度。 您必须将其拆分为两个不同的TextView对象。