【问题标题】:Make text float-right in Android在 Android 中使文本向右浮动
【发布时间】: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 中,但同样,AlignmentSpanParagraphStyle,所以看起来它不能贴上标签以这种方式与左侧文本相同的行。我可以使用其他类型的文本跨度来实现这一点,甚至是完全不同的方法吗?

目前,看来我必须要么将文本放入 HTML 并使用 WebView(不太好,因为视图将进入列表项),要么编写自定义 TextView - 类似小部件。

【问题讨论】:

  • 您考虑过自定义视图吗?
  • 正如我在问题末尾所说,这是我最后的手段,但如果可以的话,我想避免这笔费用。
  • 如果你听过 romain guy 的 google I/O 演讲,他总是推荐使用自定义视图。它可以为您提供更好的性能并允许进行大量自定义而无需创建大型视图层次结构

标签: android android-layout text textview


【解决方案1】:

在右边添加android:gravity="right"(与layout_gravity不同),同时添加android:layout_alignBottom并引用其他文本视图的id。 multiline 到 true 等我假设你已经有了。分别保留alignParentRightalignParentLeft

需要明确的是,虽然它们是矩形的,但如果您愿意,它们仍然可以重叠,使用 RelativeLayout(或 FrameLayout 等)

另一种方法,试试这个: 将android:layout_alignBottom="@id..."android:layout_alignParentBottom="true" 交换为右侧 侧文本视图。

让第三个示例和第二个示例同时使用一个简单的 RelativeLayout,嗯...

【讨论】:

  • 这似乎不适用于我的第二个示例,其中左侧文本仅适合一行,而右侧文本需要位于其下方而不是右侧。根据我对RelativeLayout 的了解,在这种情况下,文本似乎会重叠。你同意吗?
  • 啊,我在想你的最后一个例子。如果您将layout_alignBottom="@id..."layout_alignParentBottom="true" 交换为正确的那会怎样...
  • 是的,当然,我目前无法测试自己,应该很明显。对此感到抱歉。
  • 不用担心。无论如何,感谢您的尝试!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多