有没有办法完美地居中文本?

时间:2013-01-09 00:45:45

标签: android textview

我想知道是否可以创建一个自定义TextView,无论字体是什么,都能完美地居中文本。这是我现在的主要问题,但我也想知道是否可以使用像素设置特定高度,以便高度也是一致的。 Comparing text fonts 此图显示了不同字体的大小和居中方式。图中最长的黑线是白色空间的中间。除了字体之外,图片中的字母在各方面都是相同的。文字大小相同(text.setTextSize(TypedValue.COMPLEX_UNIT_PX, 450);),它们都是居中的。我希望有人知道这些问题的答案!如果您需要我的应用程序中的任何代码,请询问。谢谢!

编辑:我知道android:gravity="veritcal_center",但这只在一定程度上有效。您在上面看到的是textview中实现的内容,但每种字体都有不同的重心,因此android:gravity="veritcal_center"不会真正使所有这些字体在屏幕上完美呈现。我正在寻找一种创建自定义textView的方法,以某种方式测量文本的高度并使其与这些参数居中。 @vmironov在评论中提出的建议有效,但前提是textview只有一个字符。我无法搞砸他的代码,但是当我有机会的时候,我会在这里发帖,如果我发现了什么的话。谢谢!

3 个答案:

答案 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设置外观属性来控制大小,这也在代码示例中显示。