【发布时间】:2012-12-07 02:47:33
【问题描述】:
我正在尝试在 Android 中实现一些文本布局,有点像 HTML 中的float="right"。我在屏幕的某个区域有两个文本项。我希望其中一个在 TextView 中左对齐,其中一个右对齐,如下所示(其中任一端的 | 代表封闭容器):-
| First text item label |
到目前为止,这听起来很简单:我可以在RelativeLayout 中使用两个TextViews,将右侧的一个设置为layout_alignParentRight="true" 或layout_gravity="right"。但也存在左侧文本太长而无法放入剩余空间的情况。使用RelativeLayout 它会与右侧文本重叠,但在这种情况下我希望它分成两行:-
| This text is way too long |
| label |
同样,如果左侧的文本流到多行,我希望右侧的文本尽可能适合同一行:-
| This text doesn't fit on |
| one line label |
因为 Android 中的 Views 始终是矩形的,所以即使我编写了自定义 Layout,似乎也不可能使最后一个示例与两个 TextViews 一起工作。我考虑使用Spannable 让我将所有文本放在一个TextView 中,但同样,AlignmentSpan 是ParagraphStyle,所以看起来它不能贴上标签以这种方式与左侧文本相同的行。我可以使用其他类型的文本跨度来实现这一点,甚至是完全不同的方法吗?
目前,看来我必须要么将文本放入 HTML 并使用 WebView(不太好,因为视图将进入列表项),要么编写自定义 TextView - 类似小部件。
【问题讨论】:
-
您考虑过自定义视图吗?
-
正如我在问题末尾所说,这是我最后的手段,但如果可以的话,我想避免这笔费用。
-
如果你听过 romain guy 的 google I/O 演讲,他总是推荐使用自定义视图。它可以为您提供更好的性能并允许进行大量自定义而无需创建大型视图层次结构
标签: android android-layout text textview