Android08之LinearLayout布局讲解(权重分析*)

五大布局:LinearLayout、RelativeLayout、TableLayout、FrameLayout、AbsoluteLayout
继承结构:
   java.lang.Object
        android.view.View
               android.view.ViewGroup
                    android.widget.LinearLayout


LinearLayout:线性布局,特点:在其布局中的控件呈线性排列,默认排列顺序为Vertical(垂直),可以设置为horizontal(水平)方向,
<LinearLayout
    android:layout_width="match_parent"    --------------指定布局的宽度,①match_parent:跟父类的宽度一样,这里代表整个屏幕的宽度
                                                                                                                ②wrap_content:包含里面所放内容的大小
    android:layout_height="match_parent" ---------------指定布局的高度,跟上一样
    android:orientation="vertical"                ---------------指定布局中的子节点以什么顺序排列 ①vertical:垂直排列
                                                                                                                                               ②horizatntal:水平排列
    android:background="@android/color/..."    -------------设置布局中的背景颜色
....(通过)继承结构,很多属性都是通用的,跟控件类似,具体查看API
>
<Button
    ...
/>
</LinearLayout>
重点属性:
①android:layout:gravity跟android:gravity的区别
            android:layout:gravity:是代表控件在父结点中的位置
            android:gravity:代码文本内容在控件中的位置
android:layout:gravity
   图片
效果图:
     图片
            可以得知,在horizontal(水平)中,只能设置top、certer_vertical、bottom三个属性,相反,在vertical(垂直)中,只能设置left、certer_horizontal、right三个属性。

  android:gravity

图片

图片


②android:layout_weight 权重属性(重点)
首先看下面一个例子
例一
图片
效果如下

图片

解析:按vertical垂直排列顺序,权重分别为:1、1、1,所以三个平分垂直界面,在看如下例子:
例二
图片
效果图如下
图片
解析:Button3并没有设置权重,Button1和Button2的权重分别为1、1,权重的算法是①先将没有权重属性的控件分配空间,②剩下的在按权重分配,所以效果图就成这样了
例三:

图片
效果图
图片
解析:答案并没有像你们想象的那样,按1:2:3分配,为什么呢? 原因如下:看清属性,三个Button按钮的竖直高度都是match_parent,所以,每个Button都占满了一个屏幕,
①1+1+1=3(总共占了三个屏幕的大小);1-3=-2(本身只有一块屏幕,所需要的却是3块屏幕的大小,相减也就是剩余-2块屏幕的空间大小)
②剩余的大小来按权重分配:
Button1:1+(-2 * (1/6)) =2/3;意思是:( 原本的大小1)+ 剩余屏幕大小的所占的空间大小 = Button1实际占的大小
Button2:1+(-2 *(2/6))=1/3;意思跟上类似
Button3:1+(-2*(3/6))=0;
③所以效果图就上如上所示,如果还不清楚,看第一个例子,权重为1、1、1的例子,其实原理还是以上所讲,只不过一个剩余的屏幕空间为正数,一个剩余的屏幕空间为负数,差别仅此而已。

总结:
① 先分配完没有设置权重属性空间的所占空间
②在分配设置有权重属性控件的所占空间,算法如上所示。

到此:LinearLayout(线性)布局 讲解完毕,很多属性没有细讲,用到的时候在查看API文档。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值