如何使TextView始终位于布局的中心?

时间:2013-09-13 16:51:44

标签: android

我需要创建导航栏(我包含在很多activities.xml中),背景中心的TextView位于中心,带有titlw和后退按钮(有时候看不到后退按钮)。如何使TextView始终位于布局的中心?当Back可见时,TextView会稍微向右移动。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:background="@drawable/header_background"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btnPrevious"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/selector_previous_arrow"
        android:visibility="gone" />

    <TextView
        android:id="@+id/title"
        style="@style/title"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center_vertical|center_horizontal"
        android:gravity="center_vertical|center_horizontal"
        android:text="Title" />

</LinearLayout>

2 个答案:

答案 0 :(得分:5)

RelativeLayout将更好地满足您的需求:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/header_background" >

    <Button
        android:id="@+id/btnPrevious"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:paddingLeft="5dp"
        android:background="@drawable/selector_previous_arrow"
        android:visibility="gone" />

    <TextView
        android:id="@+id/title"
        style="@style/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Title" />

</RelativeLayout>

属性layout_centerInParent仅在宽度和高度设置为wrap_content时才有效。或者,您可以将高度和宽度设置为fill_parent并设置TextView的android:gravity="center"

为什么原始布局不起作用:

LinearLayout不允许视图重叠。因此,即使您将TextView的高度和宽度设置为fill_parent,它实际上只会在放置后退按钮后填满剩余的空间。因此,当按钮不可见时,TextView将居中。当按钮可见时,TextView在空间的剩余部分居中:因此向右移动了一点。

修改:进行了更正(将android:layout_alignLeft="true"替换为android:layout_alignParentLeft="true"

答案 1 :(得分:0)

<TextView
    android:id="@+id/title"
    style="@style/title"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:text="Title" />