我有这样的布局,我想在视图上方显示标签,然后在下面重复。
这是我的代码......
<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
,但它不喜欢它嵌套在另一个内部的事实。
任何人都可以看到这个问题的另一种解决方案吗?
答案 0 :(得分:1)
你可以用一个小技巧来避免双重权重问题。您可以在父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/...
。
答案 1 :(得分:0)
您可以通过layout_weight
实现动态屏幕尺寸。但在此之前,您只需尝试layout_weight
到线性布局,并为视图和文本视图提供适当的权重。它几乎解决了你的问题。不要使用相对布局和重量。重量在相对布局中不起作用。