在TextView中居中显示大字体文本

10

我有一个问题,似乎相当琐碎,但我迄今为止还没有能够解决它。

我有一个全屏的横屏活动,在其中我有一个包含两个 TextView 的 LinearLayout,每个 TextView 占据屏幕的一半。其中一个 TextView 必须具有居中的字符,无论字体大小如何。

问题是,当我增加这个字符的字体大小时,它不会居中,而是其中心线位于屏幕中心线以下。

这是一个在 800*480 屏幕上使用 200sp 字符大小的活动,看起来很好 - 字符被居中:

http://i122.photobucket.com/albums/o251/px_seven/char_200_sp.jpg

这是一个在 800*480 屏幕上使用 300sp 字符大小的活动,现在字符已经向下移动:

http://i122.photobucket.com/albums/o251/px_seven/char_300_sp.jpg

这是布局(我在代码中从默认的字体大小 250sp 进行了更改):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">

<TextView
    android:id="@+id/tv1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:layout_gravity="center"
    android:gravity="center_horizontal"
    android:background="#000000" /> 

<TextView
  android:id="@+id/tv2"
  android:lines="1"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_weight="1"
  android:layout_gravity="center"
  android:gravity="center"
  android:background="#000000"
  android:text="N"
  android:textSize="250sp" /> 

</LinearLayout>

有人看到问题在哪里了吗?

谢谢, Fredric


你想要实现什么样的视图? 你的布局是水平的,但在截图中看起来是垂直的。 - C.d.
实际上,我已经尝试过这段代码,看起来很好。字母N在它的TextView中是居中的。这不是你想要实现的视图吗:http://i18.photobucket.com/albums/b122/floatercrop/d0ab407b.png - C.d.
C.d.,你的示例很好,因为字体大小不足以引起问题(我的第一张屏幕截图也是这样)。 - Fredric M
肯定有一种强大的方法可以指示TextView中的实际文本始终居中,无论字体大小如何...? - Fredric M
不幸的是,我也没有找到解决方案,所以最终我将较小的字体大小(112sp)设置为默认字体大小,并创建了一个_values-h320dp_文件夹,为更高的屏幕高度设置了较大(和期望的)字体大小(192sp)。在各种设备和模拟器上进行测试验证了我的情况下这个解决方案,因此字符始终垂直居中在我的TextView中。 - TechAurelian
显示剩余2条评论
1个回答

19
尝试将此属性添加到文本视图中: android:includeFontPadding="false"

啊,是的,我看到了那个属性。不记得是否尝试过了 - 我今晚会再试一次,谢谢! - Fredric M
1
不行-android:includeFontPadding="false"没有起作用-实际上它什么也没改变。我尝试了android:layout_height="wrap_content"和"match_parent"两种方式。还有更多的想法吗? :)问题是字符到视图边界的边距是否可以减少到零? - Fredric M
你可以尝试扩展TextView并创建自己的TextView。虽然我认为肯定有一种简单的方法,但我找不到。 - C.d.
是的,那可能是前进的方式。谢谢! - Fredric M
在这里你应该能找到答案 https://dev59.com/dWkw5IYBdhLWcg3w8fFJ GL! - deadfish
我的textView上有一些字母,比如y、g。这些字母的底部会被裁剪掉。将textView设置为android:includeFontPadding="false"可以帮助我看到没有裁剪的文本。谢谢。 - Srikanth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接