我有以下布局:
<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的分割,并且我已经尝试了所有内容,但似乎没有任何效果。我尝试在线性布局中添加一个空视图,我给出了线性布局中的视图权重,但没有任何效果。有人可以指出我做错了什么吗?
答案 0 :(得分:3)
将您的主根父级更改为LinearLayout
并为其指定垂直方向。 RelativeLayout不支持weightsum
,正如您在代码中看到的那样,您要为高度定义0dp
,因此您必须使您的根视图LinearLayout具有垂直方向以使权重起作用。
<LinearLayout 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>
答案 1 :(得分:3)
您必须将LinearLayout作为父级才能使用weightSum,因为RelativeLayout不支持weightSum。 现在你必须采用LinearLayout而不是RelativeLayout。 你必须写下你的CODE。
<LinearLayout 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:orientation="vertical"
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_below="@id/top"
android:layout_weight="20"
android:background="@color/color_black">
<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_below="@id/middle"
android:layout_weight="40"
android:background="@color/color_white">
<View
android:layout_width="match_parent"
android:layout_height="10dp" />
</LinearLayout>
</LinearLayout>
答案 2 :(得分:1)
试试这个
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/color_brand">
<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>
您的父母是相对布局,为什么不起作用
答案 3 :(得分:1)
WeightSum
仅适用于LinearLayout
。因此,您必须将父级RelativeLayout
更改为LinearLayout
。
所以改变你的代码
<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 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"
android:orientation="vertical">
注意:在
中添加orientation
。LinearLayout
答案 4 :(得分:1)
android:weightSum
不是RelativeLayout
的属性,而是LinearLayout
的属性。因此,您可以将父级布局更改为LinearLayout
,也可以使用PercentRelativeLayout
代码段
<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
app:layout_widthPercent="50%"
app:layout_heightPercent="50%"
app:layout_marginTopPercent="25%"
app:layout_marginLeftPercent="25%"/>
</android.support.percent.PercentRelativeLayout>
答案 5 :(得分:1)
删除您的相对布局或使用您的方向将其更改为线性。它会工作。
答案 6 :(得分:1)
<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="100">
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="40">
<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/colorBlack"
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:layout_below="@id/middle">
<View
android:layout_width="match_parent"
android:layout_height="10dp"/>
</LinearLayout>
</LinearLayout>
使用此功能可以解决您的问题。还有一件事,当您想根据重量管理布局时,您必须使用LINEAR LAYOUT,因为重量概念在RELATIVE LAYOUT中不起作用。
答案 7 :(得分:0)
试试20-40-20
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="100">
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="40"
android:background="@android:color/darker_gray">
<View
android:layout_width="match_parent"
android:layout_height="10dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/middle"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="20"
android:background="@android: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="50dp"
android:layout_weight="40"
android:background="@android:color/darker_gray"
android:layout_below="@id/middle">
<View
android:layout_width="match_parent"
android:layout_height="10dp" />
</LinearLayout>
</LinearLayout>
尝试40-20-40
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="10">
<LinearLayout
android:id="@+id/middle"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="3"
android:background="@android:color/black"
android:layout_below="@id/top">
<View
android:layout_width="match_parent"
android:layout_height="10dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="4"
android:background="@android:color/darker_gray">
<View
android:layout_width="match_parent"
android:layout_height="10dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="3"
android:background="@android:color/black"
android:layout_below="@id/middle">
<View
android:layout_width="match_parent"
android:layout_height="10dp" />
</LinearLayout>
</LinearLayout>