我想知道是否可以创建一个自定义TextView,无论字体是什么,都能完美地居中文本。这是我现在的主要问题,但我也想知道是否可以使用像素设置特定高度,以便高度也是一致的。
此图显示了不同字体的大小和居中方式。图中最长的黑线是白色空间的中间。除了字体之外,图片中的字母在各方面都是相同的。文字大小相同(text.setTextSize(TypedValue.COMPLEX_UNIT_PX, 450);
),它们都是居中的。我希望有人知道这些问题的答案!如果您需要我的应用程序中的任何代码,请询问。谢谢!
编辑:我知道android:gravity="veritcal_center"
,但这只在一定程度上有效。您在上面看到的是textview
中实现的内容,但每种字体都有不同的重心,因此android:gravity="veritcal_center"
不会真正使所有这些字体在屏幕上完美呈现。我正在寻找一种创建自定义textView
的方法,以某种方式测量文本的高度并使其与这些参数居中。 @vmironov在评论中提出的建议有效,但前提是textview
只有一个字符。我无法搞砸他的代码,但是当我有机会的时候,我会在这里发帖,如果我发现了什么的话。谢谢!
答案 0 :(得分:2)
实现目标的简单方法是使用以下代码:
<LinearLayout
android:layout_width="100dp"
android:layout_height="20dp"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="@string/your_text" />
</LinearLayout>
如果要将文本设置为在恒定高度和宽度内的中心对齐,请设置LinearLayout的高度和宽度值
答案 1 :(得分:0)
将视图的重力设置为“center_vertical”。类似的东西:
android:gravity="center_vertical"
答案 2 :(得分:-1)
您应该能够通过将重力属性应用于包含TextView来居中文本。
在XML中,您可以为TextView指定一个属性,如下所示:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="18sp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/some_text" />
如果您确实要为文本指定特定大小,强烈建议您使用SP(缩放像素)作为度量单位,而不是像素。您还可以为TextView设置外观属性来控制大小,这也在代码示例中显示。