码迷,mamicode.com
首页 > 其他好文 > 详细

Layout_weight及常见属性

时间:2018-08-12 23:38:53      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:分享图片   text   分享   lin   size   col   添加   height   src   

 问题引入:如下代码,UI显示是怎样的

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="111111111111"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:layout_weight="2"
        android:gravity="center"
        android:text="2"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:layout_weight="3"
        android:gravity="center"
        android:text="3"/>

</LinearLayout>

会有错位,显示为如下

技术分享图片

解决方法:在父类布局中添加baselineAligned="false"属性

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false">
    <TextView
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="111111111111"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:layout_weight="2"
        android:gravity="center"
        android:text="2"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:layout_weight="3"
        android:gravity="center"
        android:text="3"/>

</LinearLayout>

 技术分享图片

1、LinearLayout中的layout_weight属性,先按照空间声明的尺寸进行分配,然后再将剩下的尺寸按weight分配,看如下代码和显示结果

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="111111111111"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_weight="2"
        android:gravity="center"
        android:text="2"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_weight="2"
        android:gravity="center"
        android:text="3"/>

</LinearLayout>

技术分享图片

 

计算结果(假设LinearLayout宽度为480):

剩余尺寸为:480-480*3=-480*2

TextView1的尺寸为:480+(-480*2)/5=480*(3/5)

TextView2,3的尺寸为:480+(-480*2)*(2/5)=480*(1/5)

结论:控件宽度+父控件剩余宽度*比例

 

 2、weight和Layout_weight属性区别

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="6"
    android:baselineAligned="false">
    <TextView
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="111111111111"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:layout_weight="2"
        android:gravity="center"
        android:text="2"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:layout_weight="2"
        android:gravity="center"
        android:text="3"/>

</LinearLayout>

技术分享图片

结论:layout_是父容器的属性处理,没有layout_是本身的属性

 

Layout_weight及常见属性

标签:分享图片   text   分享   lin   size   col   添加   height   src   

原文地址:https://www.cnblogs.com/pkangping/p/9465320.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!