0

このようなレイアウトでは、ビューの上にラベルを表示してから、下にそれを繰り返します。

これが私のコードです...

<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/speedLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="@string/speed"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <View
        android:id="@+id/speedGraph"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="4dp"
        android:layout_below="@+id/speedLbl"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:background="@color/blueColour" />

    <TextView
        android:id="@+id/distanceLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_below="@+id/speedGraph"
        android:text="@string/distance"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <View
        android:id="@+id/distanceGraph"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/distanceLbl"
        android:layout_marginBottom="4dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:background="@color/blueColour" />

</RelativeLayout>

問題は、画面サイズに応じて動的に変更するため、2つのビューの高さを設定したくないことです。
使ってみlayout_weightましたが、入れ子になっているのが気に入らないです。

誰かがこの問題の別の解決策を見ることができますか?

4

2 に答える 2

2

ちょっとしたトリックで二重の重みの問題を回避できます。View次のように、親の垂直方向の中央に空を設定し、その上下RelativeLayoutに 2 つのグループを配置できViewます。

<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="vertical" >

    <View android:id="@+id/anchor" 
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_centerVertical="true/>

    <TextView
        android:id="@+id/speedLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="@string/speed"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <View
        android:id="@+id/speedGraph"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="4dp"
        android:layout_below="@id/speedLbl"
        android:layout_above="@id/anchor"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:background="@color/blueColour" />

    <TextView
        android:id="@+id/distanceLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_below="@id/anchor"
        android:text="@string/distance"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <View
        android:id="@+id/distanceGraph"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/distanceLbl"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="4dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:background="@color/blueColour" />

</RelativeLayout>

また@+id/...、その id を最初に宣言するときにのみ表記を使用する必要があり、次の id の出現時に@id/....

于 2012-06-18T11:22:18.893 に答える
0

を介して動的な画面サイズを実現できます layout_weight。ただし、その前 layout_weightに、線形レイアウトを試して、ビューとテキストビューに適切な重みを付けてください。それはあなたの問題をほとんど解決します。重みのある相対レイアウトを使用しないでください。ウェイトは相対レイアウトでは機能しません。

于 2012-06-18T10:04:37.927 に答える