安卓fill_parent权重计算规则

match_parent(fill_parent):这个则需要计算了
安卓权重计算规则

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"    
    android:id="@+id/LinearLayout1"    
    android:layout_width="match_parent"    
    android:layout_height="match_parent" >    
    
    <TextView    
        android:layout_weight="1"    
        android:layout_width="fill_parent"    
        android:layout_height="fill_parent"    
        android:text="one"     
        android:background="#98FB98"    
     />    
     <TextView    
        android:layout_weight="2"    
        android:layout_width="fill_parent"    
        android:layout_height="fill_parent"    
        android:text="two"     
        android:background="#FFFF00"    
     />    
     <TextView    
        android:layout_weight="3"    
        android:layout_width="fill_parent"    
        android:layout_height="fill_parent"    
        android:text="three"     
        android:background="#FF00FF"    
     />    
    
</LinearLayout> 

运行效果图
在这里插入图片描述

这个时候就会有疑问了,怎么会这样,这比例是2:1吧,那么three去哪了?代码里面明明有 three的啊,还设置了3的,而1和2的比例也不对耶,1:2:3却变成了2:1:0,怎么会这样呢? 答:这里其实没那么简单的,还是需要我们计算的,网上给出的算法有几种,这里就给出笔者 觉得比较容易理解的一种:
step 1:个个都是fill_parent,但是屏幕只有一个啦,那么1 - 3 = - 2 fill_parent step 2:依次比例是1/6,2/6,3/6
step 3:所有份数加在一起,然后用1-(2*当前份数)/所有的份数加在一起,one是1 代入:1-(21)/6=2/3 所有占屏幕的2/3 two代入:1-(22)/6=1/3 占屏幕1/3, three:1-(2*3)/6=0 没有
所有最后会变成上图那样,

下面再来一张例子 根据公式代入测试

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:orientation="horizontal"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline2">
        <TextView
            android:layout_weight="2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="one"
            android:background="#98FB98"
            />
        <TextView
            android:layout_weight="3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="two"
            android:background="#FFFF00"
            />
        <TextView
            android:layout_weight="4"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="three"
            android:background="#FF00FF"
            />
    </LinearLayout>


代入公式:2+3+4=9
one:1-( 2 *2)/9=5
two:1-(3 *2)/9=3
three:1-(4 *2)/9=1
所有视图显示5:3:1

谢谢各位 我也是小白 不懂的可以一起交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值