Android 中的文本/布局对齐(文本对齐,重力)

android:textAlignmentandroid:gravity有什么区别?

73397 次浏览

据我所知,文本对齐似乎大多未被使用。 根据它的描述,它应该只做右对齐或左对齐。 重力似乎是一个改进的文本对齐。

我所能看到的是 textAlign 是 View 类的一个成员,重力是 TextView 类的成员。因此,对于 TextView 及其子类,您可以使用引力,而对所有视图都可以使用 textAlign。

由于 TextView 及其子类需要一些更多的文本对齐特性,因此您可以看到在文本对齐中只有基本选项的重力选项更多。虽然这只是我的猜测,因为我还没有找到任何关于这种差异的明确文档。

您可以看到这两个文档链接: 文本对齐重力

对于 API 15,android:textAlignment可能不会达到预期的结果。下面的代码片段尝试使用 android:textAlignment="center"集中第一个 TextView对象。第二种使用 android:gravity="center_horizontal"textAlignment没有效果,而重力工作良好。与 API 17 + ,textAlignment中心的文本预期。

为了确保你的文字与所有版本的对齐正确,我会选重力。

<LinearLayout
android:layout_width="50dp"
android:layout_height="match_parent"
android:orientation="vertical">


<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="Fri"
android:textAlignment="center"
android:textSize="16sp" />


<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="29"
android:gravity="center_horizontal"
android:textSize="18sp" />


</LinearLayout>

API 15的布局结果:
Resulting layout in API 15

API 17 + 的布局结果:
Resulting layout in API 17+

还有一点没有明确提到:

如果应用程序禁用了 RTL 支持,例如在清单 application标签中禁用了 android:supportsRtl="false",那么 View textAlignment不能用于文本定位,而 TextView gravity可以用于文本定位。

这是另一个选择 gravity的理由。