Android中的文本/布局对齐(textAlignment,gravity)
Posted
技术标签:
【中文标题】Android中的文本/布局对齐(textAlignment,gravity)【英文标题】:Text/Layout Alignment in Android (textAlignment, gravity) 【发布时间】:2013-04-18 06:24:32 【问题描述】:android:textAlignment
和 android:gravity
有什么区别?
【问题讨论】:
【参考方案1】:我只能看到 textAlignment 是 View 类的成员,而重力是 TextView 类的成员。因此,对于 TextView 及其子类,您可以使用重力,而您可以将 textAlignment 用于所有视图。
由于 TextView 及其子类需要更多的文本对齐功能,因此您可以看到重力有更多选项,而 textAlignment 只有基本选项。虽然这只是我的猜测,因为我还没有找到任何关于差异的明确文档。
您可以看到这两个文档链接:textAlignment 和 gravity。
【讨论】:
在使用其他人的小部件时要小心,似乎重力不会覆盖textAlignment
,因此例如,当覆盖Snackbar
默认设置时,您需要设置textAlignment
而不是gravity
。 IE。 val textView = sb.view.findViewById<TextView>(com.google.android.material.R.id.snackbar_text) textView.textAlignment = View.TEXT_ALIGNMENT_CENTER
【参考方案2】:
使用 API 15,android:textAlignment
可能无法获得所需的结果。下面的 sn-p 尝试使用 android:textAlignment="center"
将第一个 TextView
对象居中。第二个使用android:gravity="center_horizontal"
。 textAlignment
没有效果,而重力工作正常。对于 API 17+,textAlignment
按预期将文本居中。
为了确保您的文本与所有版本正确对齐,我会使用重力。
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical">
<TextView
android:layout_
android:layout_
android:layout_marginTop="5dp"
android:text="Fri"
android:textAlignment="center"
android:textSize="16sp" />
<TextView
android:layout_
android:layout_
android:text="29"
android:gravity="center_horizontal"
android:textSize="18sp" />
</LinearLayout>
API 15 中的结果布局:
API 17+ 中的结果布局:
【讨论】:
android:textAlignment
仅适用于 API 17+,因此对较低版本没有影响。【参考方案3】:
还有一点没有明确提到:
如果您的应用程序禁用了 RTL 支持,例如android:supportsRtl="false"
在清单 application
标记中,然后 View
textAlignment
不适用于文本定位,而 TextView
gravity
有效。
另一个更喜欢gravity
的理由。
【讨论】:
【参考方案4】:据我所见,textAlignment 似乎大多未使用。 根据它的描述,它应该只是右对齐或左对齐。 Gravity 似乎是一种改进的 textAlignment。
【讨论】:
以上是关于Android中的文本/布局对齐(textAlignment,gravity)的主要内容,如果未能解决你的问题,请参考以下文章
IOS 4个容易混淆的属性(textAligment contentVerticalAlignment contentHorizontalAlignment contentMode)