我需要创建导航栏(我包含在很多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>
答案 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" />