在多行中显示两个TextView并排

4
我遇到了一个问题,我希望即使第一个TextView有几行文本,两个TextView也能并排布局。理想情况下,下一个TextView应该直接跟在后面。这有点难以解释,所以我画了这张图片来说明:

(第一个TextView包含标题,第二个TextView包含年份)
我已经尝试了一些不同的方法,包括布局技巧和使用Html.fromHtml(),但是到目前为止都没有成功。可能做不到,但我只是想确认一下。

如果我们能看到一些代码,那会很有帮助。 - Azulflame
@Michell Bak:为什么你不直接在标题后添加年份呢? - Squonk
@azulflame 不是很复杂。它只是一个包含两个嵌套TextView的简单LinearLayout。 - Michell Bak
@Squonk 我希望它能从标题中脱颖而出。 - Michell Bak
@MichellBak:还可以看看这个网站,它解释了Spannable文本的用法 http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring - Squonk
显示剩余2条评论
2个回答

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中有很多不同的span定义,上面只是创建同一字符串中两种不同文本大小的示例。您应该能够从这个TextAppearanceSpanTypefaceSpan或其他组合中获得所需的内容。

希望对您有所帮助。


1

在RelativeLayout中并排放置两个TextView可能会有所帮助,如果您添加正确的HTML格式,我不明白为什么Html.fromHtml不能正常工作。


1
一个RelativeLayout不起作用。它会将第二个TextView移动到第一个TextView的右侧。如果第一个TextView有多行文本,那么这可能会在第一行和第二行之间留下巨大的间隙。至于Html.fromHtml(),我正在使用<small>(2011)</small>作为第二部分,但它完全忽略了small标签。 - Michell Bak
这可能会有所帮助。https://dev59.com/V3I_5IYBdhLWcg3wFvDL - akshaydashrath
是的,我一直在看那个,但就像我说的一样,我无法让“small”标签起作用。 - Michell Bak
奇怪,我正在遵循这个指南http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html你认为这可能与设备有关吗?你尝试在另一台设备上吗? - akshaydashrath
另一个可能的解决方法:https://dev59.com/Zms05IYBdhLWcg3wNPE3 - akshaydashrath
Spannable似乎能够完成任务,Devunwired发布了完整的解决方案,所以我接受了那个,但是对你的评论点赞! - Michell Bak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接