我有以下布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_brand"
android:weightSum="100">
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="40"
android:background="@color/color_white">
<View
android:layout_width="match_parent"
android:layout_height="10dp"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/middle"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="20"
android:background="@color/color_black"
android:layout_below="@id/top">
<View
android:layout_width="match_parent"
android:layout_height="10dp"/>
</LinearLayout>
<LinearLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="40"
android:background="@color/color_white"
android:layout_below="@id/middle">
<View
android:layout_width="match_parent"
android:layout_height="10dp"/>
</LinearLayout>
</RelativeLayout>
我想要一个40-20-40的布局之间的分裂,我已经尝试了一切,但似乎没有工作。我尝试在线性布局中添加一个空视图,我已经给线性布局中的视图赋予了权重,但是没有任何效果。有人能指出我做错了什么吗?
9条答案
按热度按时间ctrmrzij1#
将主根父节点更改为
LinearLayout
并给予其垂直。RelativeLayout不支持weightsum
,正如您在代码中看到的,您正在为高度定义0dp
,因此您必须使根视图LinearLayout具有垂直方向以使权重工作。wvt8vs2t2#
试试这个
您的父级是相对布局,为什么不起作用
ds97pgxw3#
android:weightSum
不是RelativeLayout
的属性,而是LinearLayout
的属性。因此,您可以将父布局更改为LinearLayout
或使用PercentRelativeLayout
代码片段
tquggr8v4#
删除你的相对布局或更改为线性与你的方向。会成功的
bfhwhh0e5#
使用它将解决您的问题。还有一件事,当你想根据重量来管理你的布局时,你必须使用线性布局,因为重量的概念在相对布局中不起作用。
jjhzyzn06#
WeightSum
只适用于LinearLayout
。因此,您必须将父节点RelativeLayout
更改为LinearLayout
。所以更改你的this代码
到这个
注:在
LinearLayout
中添加orientation
。643ylb087#
您必须将LinearLayout作为父项才能使用weightSum,因为RelativeLayout不支持weightSum。现在你必须使用LinearLayout而不是RelativeLayout。你必须像下面这样写你的代码。
1dkrff038#
我认为你必须用线性布局代替相对布局。
xlpyo6sf9#
试试这个20-40-20
输出:
试试这个40-20-40
输出