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>

问题是我不想为两个视图设置高度,因为我希望它们根据屏幕尺寸动态变化。
我尝试使用layout_weight,但它不喜欢它嵌套在另一个内部的事实。

谁能看到这个问题的另一种解决方案?

4

2 回答 2

2

您可以通过一个小技巧来避免双重权重问题。View您可以在父项的垂直中心设置一个空,RelativeLayout并将两个组放置在其上方和下方,如下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 回答