【问题标题】:Android - How to append the textview to the end of another textview?Android - 如何将文本视图附加到另一个文本视图的末尾?
【发布时间】:2020-04-26 21:50:41
【问题描述】:

我正在创建一个图库应用程序。每张图片都会显示标题以及上传图片的人的姓名。我想要的示例如下:

这里的夜很黑,但这个黑暗有寂静是图片的标题,shaggy boy是上传图片的用户。

所以,现在我想要夜已深,但这种黑暗有寂静在单独的textview毛茸茸的男孩在夜很黑,但是这个黑暗有沉默的textview即使夜很黑,但是这个黑暗有沉默是单行还是多行。

我使用了Flexbox Layout,但我没有达到我想要的效果。

如何将textview 附加到另一个textview 的末尾?谢谢!!!

【问题讨论】:

  • 只需在 xml 中为 textviews 更改 textcolor,我想它会达到目的。
  • 但是如何将另一个文本视图附加到第一个文本视图的末尾?
  • 您可以查看SpannableStringBuilder,它允许在同一个文本视图中使用不同的文本样式
  • 如果你是通过java完成的,你可以在同一个textview中完成。
  • @ManzoorAhmad 你不认为在 RecyclerView 的情况下会产生额外的开销吗?

标签: android android-layout textview


【解决方案1】:

您可以使用单个 TextView 并将其文本字符串设置为 Spannable 并将文本的每个部分与索引匹配这里我用连字符分隔两个部分;但您可以随意更改。

TextView textView = findViewById(...);

String tag = "Night is dark, but this darkness has the silence - shaggy boy";
SpannableString spannableString = new SpannableString(tag);

spannableString.setSpan(new ForegroundColorSpan(Color.BLACK), 0, tag.indexOf("-"), 0);
spannableString.setSpan(new ForegroundColorSpan(Color.GRAY), tag.indexOf("-"), tag.length(), 0);
textView.setText(spannableString);

【讨论】:

  • 你不觉得 RecylerView 的额外开销吗?还有其他方法吗?
  • @StackOverflow 我猜你是否使用了几个 TextViews,这将是计算视图大小和位置的开销。但让我仔细想想是否有更有效的方法
  • @StackOverflow 请检查另一个答案.. 决定分开放置,因为它是不同的方法......也许这会更紧凑,性能更好......但不完全确定
【解决方案2】:

也许你可以直接获取作者的TextView的文本并将其添加到第一个TextView的String中?

【讨论】:

    【解决方案3】:

    您可以将单个TextView 与引用和作者的字符串占位符一起使用,并使用 HTML 标记添加颜色。

    strings.xml

    <resources>
    
        <string name="tag">
            <![CDATA[
                <font color="#00000">%1$s</font> -
                <font color="#D3D3D3">%2$s</font>
            ]]>
        </string>
    
    
    </resources>
    

    行为:

    String message = "Night is dark, but this darkness has the silence";
    String name = "shaggy boy";
    
    String formattedTag = String.format(getString(R.string.tag), message, name);
    
    textview.setText(Html.fromHtml(formattedTag));
    

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 2021-08-06
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多