我不明白这是怎么工作的(View with layout_weight的MATCH_PARENT)

时间:2019-07-17 16:58:20

标签: android android-studio android-layout

当我为MATCH_PARENT + View设置layout_weight时,视图的元素表现得很奇怪。请您能解释为什么会这样。例如,这是要进行实验的代码。我不明白这种模式。物品的重量越少,重量就越大,但是还不清楚多少次。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:weightSum="5"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FF0"
        android:orientation="horizontal">
    </LinearLayout>

    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#F00"
        android:orientation="horizontal">
    </LinearLayout>

    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#F0F"
        android:orientation="horizontal">
    </LinearLayout>

    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#0FF"
        android:orientation="horizontal">
    </LinearLayout>

    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#00F"
        android:orientation="horizontal">
    </LinearLayout>

</LinearLayout>

enter image description here              

测试黄色布局:设置layout_weight= 0.5>大?大多少?元素是否缩小了?还是被扔掉了??

<LinearLayout
   android:layout_weight="0.5"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#F00"
   android:orientation="horizontal">
</LinearLayout>

enter image description here

更新,PS::我知道该布局如何与WRAP_CONTENT(或0dp)一起使用。如果您设置MATCH_PARENT + layout_weight,则无论内容如何,​​WRAP_CONTENT不能保证内容的大小都是固定的(并且如果内容大小增加了) ,元素将被拉伸)。 我只对模式MATCH_PARENT + layout_weight感兴趣,因为当内容大小超出时,它可以保证块大小。

2 个答案:

答案 0 :(得分:0)

  

放置物品的重量越少,就越重...

原因是因为您要将android:layout_width作为match_parent分配给所有LinearLayout。要使android:layout_weight有效,您android:layout_width设置为0。

答案 1 :(得分:0)

首先,将android:weightSum赋予布局的父级。

第二,如果布局彼此水平放置,则为每个元素设置android:layout_width="0dp"

类似地,对于垂直对齐的元素,给出android:layout_height="0dp"