我遇到了一个问题,因为即使第一个TextView有几行文本,我也希望两个TextView并排布局。理想情况下,下一个TextView应该紧跟在之后。这有点难以解释,所以我已经用这张照片来说明它:
(第一个TextView包含标题,第二个TextView包含一年)
我现在一直在尝试一些不同的东西,包括布局黑客和使用Html.fromHtml(),但到目前为止还没有任何工作。这可能是不可能的,但我只是想确定。
答案 0 :(得分:5)
这听起来像是Spannable
的工作。正如您已经注意到,执行两个视图的问题是两行示例中TextView
的边界仍然是一个矩形,因此在文本末尾布置第二个视图会变得棘手。 HTML可以用于简单的标签(粗体,下划线,标题),但不太灵活。
解决方案是使用Spannable
创建内容的文本,并将特定格式应用于每个“span”。事实证明,您可以将整个结果直接粘贴到单个TextView
中。类似的东西:
TextView tv; //Defined somewhere else
SpannableStringBuilder resultBuilder = new SpannableStringBuilder();
SpannableString item = new SpannableString("Long and Fancy Movie Title Here");
item.setSpan(new AbsoluteSizeSpan(18, true), 0, item.length(), 0);
resultBuilder.append(item);
SpannableString item = new SpannableString("(2011)");
item.setSpan(new AbsoluteSizeSpan(12, true), 0, item.length(), 0);
resultBuilder.append(item);
tv.setText(resultBuilder, TextView.BufferType.SPANNABLE);
android.text.style
中有大量不同的跨度定义,上面只是在同一个字符串中创建两个不同文本大小的示例。您应该可以从这个TextAppearanceSpan
,TypefaceSpan
或其他组合中获得您想要的内容。
HTH
答案 1 :(得分:1)
在RelativeLayout中并排的两个TextView可能会起作用,我不明白为什么如果添加正确的html格式,Html.fromHtml将不起作用