TextView不会在父级中垂直居中

时间:2013-07-31 06:12:52

标签: android layout textview

我的活动只有一个TextView,我试图让文本垂直居中但最终对齐到底部。我尝试改变几个属性,但没有运气。这是我目前所拥有的(Android 2.3):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/llFlash"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="0dp" >

    <TextView
        android:id="@+id/tvFlash"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ff0000"
        android:padding="0dp"
        android:textStyle="bold"
        android:includeFontPadding="false"
        android:gravity="center_vertical"
        android:layout_centerInParent="true" />

</RelativeLayout>

修改 我实际上是在代码中设置文本大小,它是一个很大的值。如果将文本大小增加到屏幕的宽度(在横向模式下),则它显示为与屏幕底部对齐。但是,如果使用普通的文本大小(如20sp),它将显示为居中。这告诉我,当你将textsize增加到非常大时,看起来Android正在增加一些隐藏的内部填充(即使我确实将includeFontPadding设置为false)。

4 个答案:

答案 0 :(得分:2)

对我来说很好,但是,

你为什么不用;

android:layout_centerVertical="true"

而不是

android:gravity="center_vertical"
android:layout_centerInParent="true"

答案 1 :(得分:1)

这似乎不是TextView的限制,而是Android处理大文本字体的方式。其他人也注意到了这一点:

https://stackoverflow.com/a/4769205/753632

答案 2 :(得分:0)

即使没有布局:重力,它对我来说也没问题。

android:layout_centerInParent="true"

android:layout_centerVertical="true"
android:layout_centerHorizontal="true"

您也可以将您的相对布局修改为

android:layout_width="match_parent"
android:layout_height="match_parent"

因为从API 8开始建议使用match_parent。

这是活动中唯一的布局吗?或者这是片段的一部分吗?

答案 3 :(得分:0)

首先,在主布局中创建另一个相对布局,然后将您的textview插入其中,之后,将gravity属性设置为居中;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/llFlash"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:padding="0dp" >
<RelativeLayout
  android:layout_width="0dp"
  android:layout_height="match_parent"
  android:layout_weight="3.5">
  <TextView
   android:id="@+id/ucontact"
   android:layout_width="match_parent"
   android:gravity="center"
   android:text="0708453589"
   android:layout_height="match_parent" />
   </RelativeLayout>
</RelativeLayout>