atch_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>


图片发自简书App

这个时候就会有疑问了,怎么会这样,这比例是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:先到先得,先分给one,计算: 1 - 2 * (1/6) = 2/3 fill_parent 接着到two,计算: 1 - 2 * (2/6) = 1/3 fill_parent 最后到three,计算 1 - 2 * (3/6) = 0 fill_parent step 4:所以最后的结果是:one占了两份,two占了一份,three什么都木有 以上就是为什么three没有出现的原因了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容