1

さまざまな画面サイズで見やすくするために、 weight 属性を使用してインターフェイスを設計しようとしています。基本的に、3 つの RelativeLayout (ヘッダー、コンテンツ、フッター) を含む垂直方向の LinearLayout を使用します。ヘッダーとフッターをそれぞれ 15%、コンテンツを高さの 70% にしたいと思います。ただし、たとえばヘッダーにウィジェットを設定すると、alignParentBottom="true" を使用すると、すべてが台無しになります。height="fill_parent" でウィジェットを使用すると、同じ問題が発生します。ヘッダーはすべての LinearLayout を埋めます!

[編集] : NoActionBar テーマを使用していますが、それは私の問題に関連しているようで、デフォルトのテーマに変更すると問題が解決します。しかし、私は本当にActionBarを非表示にする必要があります...

私が持っているもの: レイアウトが崩れる

私がしたいこと: レイアウトOK

問題は、たとえば、ヘッダーの下部に日付を配置したいということです...

ヘッダーの単純化されたコードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:background="@drawable/fond_header"
    android:layout_weight=".2" >

    <TextView
        android:id="@+id/dateForm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:textSize="20sp"
        android:layout_marginBottom="2dp"
        android:background="@drawable/fond_date_header" />

</RelativeLayout>

フッターは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:background="@drawable/fond_header"
    android:layout_weight=".2" >

    <ImageButton
        android:id="@+id/retourBouton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/menu"
        android:src="@drawable/retour" />

</RelativeLayout>

完全なインターフェイスの簡略化されたコードは次のとおりです。

<?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:orientation="vertical"
    android:weightSum="1.0" >

    <include layout="@layout/header" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.6" >
    </RelativeLayout>

    <include layout="@layout/footer" />

</LinearLayout>

何か案は?

よろしくお願いします。

バレンティン

4

1 に答える 1

0

次のように、重みが同じレイアウト ファイルにあると読みやすくなります。

<?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:orientation="vertical"
              android:weightSum="1.0" >

    <include layout="@layout/header"
             android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_weight=".2"/>

    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight=".6" >
    </RelativeLayout>

    <include layout="@layout/footer"
             android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_weight=".2" />
</LinearLayout>

ヘッダーとフッターで、layout_weight を削除し、高さ/幅を match_parent に設定しました。メイン レイアウトはそれらをオーバーライドします。

更新: ヘッダーとフッターを追加しました。

ヘッダ:

<?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="@android:color/darker_gray">
    <TextView
            android:id="@+id/dateForm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:textSize="20sp"
            android:text="Some Text"
            android:layout_marginBottom="2dp"
            android:textColor="@android:color/black"
            android:background="@android:color/white" />
</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="@android:color/darker_gray">

    <ImageButton
            android:id="@+id/retourBouton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:src="@drawable/ic_launcher"
            android:background="@android:color/holo_orange_light"
            android:contentDescription=""/>

</RelativeLayout>
于 2013-07-06T18:26:03.243 に答える