1

ナビゲーション バー (多くの activities.xml に含まれています) を作成する必要があります。バックグラウンドには、中央に TextView があり、Titlew と戻るボタンがあります ([戻る] ボタンが表示される場合と表示されない場合があります)。TextView を常に Layout の中心に配置するにはどうすればよいですか? 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>
4

2 に答える 2

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"

于 2013-09-13T16:59:18.613 に答える