【问题标题】:Multiple alignment in TextView?TextView中的多重对齐?
【发布时间】:2011-10-02 23:58:40
【问题描述】:

我有一个如下所示的 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 没有任何用于对齐的 span 类。我找不到像“AlignmentSpan”这样的东西。

【问题讨论】:

    标签: android android-2.2-froyo text-alignment


    【解决方案1】:

    虽然回答很晚,但我认为它至少可以帮助某人。将此添加到您的代码中。

    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 等价于左侧。

    注意:这仅在左右对齐文本之间至少有 1 个换行符 (\n) 时有效。

    【讨论】:

    • 这绝对应该是公认的答案!这也适用于通过 Alignment.ALIGN_CENTER 使文本居中。
    • 由于某种原因,我无法让它在我的 TextView 中工作。所有的行都有相同的对齐方式。
    • 它不工作。我在字符串中间也有 \n
    • 一行如何?
    • 一行语句不行。示例:“2016 年开始”。 “2016”不会向右下车。
    【解决方案2】:

    我认为您应该将文本拆分为 1 个以上的字符串,将它们放入单独的 textview 中,然后一一对齐。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      如果 resultText 总是右对齐,请将gravity="right" 属性添加到您的resultTextView,而不是尝试将文本与样式化的可跨字符串右对齐。这是假设灰色文本位于与主文本不同的 TextView 中。

      在 xml 中为结果(灰色)文本:

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

      【讨论】:

      • 不,我的意思是黑色文本左对齐,灰色文本右对齐。我称之为“多重对齐”。 :)
      • 您需要将黑色文本与结果文本分开(有 2 个单独的文本视图)。
      猜你喜欢
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多