6

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

编辑:我知道android:gravity="veritcal_center",但这仅在一定程度上有效。您在上面看到的是在 中实现的textview,但每种字体都有不同的重心,因此android:gravity="veritcal_center"不会真正使所有这些中心完美地沿着屏幕。我正在寻找一种创建自定义的方法,该自定义textView以某种方式测量文本的高度并以这些参数为中心。@vmironov 在评论中的建议有效,但前提是textview有一个字符。我一直无法弄乱他的代码,但是当我有机会时我会这样做,如果我发现任何东西,我会在这里发布。谢谢!

4

3 回答 3

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 的高度和宽度值设置为固定

于 2013-01-09T09:24:56.270 回答
0

将视图的重力设置为“center_vertical”。就像是 :

android:gravity="center_vertical"
于 2013-01-17T17:25:06.210 回答
-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 设置一个外观属性来控制大小,这也在代码示例中显示。

于 2013-01-09T00:59:07.867 回答