热门话题
  • ...
    讨论 37 · 今日 0
  • ...
    讨论 12 · 今日 0
  • ...
    讨论 2 · 今日 0
  • 官方公告...
    讨论 1 · 今日 0
  • ...
    讨论 0 · 今日 0
  • 浅谈线性布局(二) 1月前

    xiue 318°

    相关内容:

    浅谈线性布局(一)

    温馨提示:这个教程适合具有一定基础再阅读(比如看了官方的手册,自己也写过代码)

    PS:对于在布局内如何添加的不在讲述,请移步其他教程。


    部分术语介绍:

    1.根控件:布局界面最底层的控件(最先添加的,软件默认会添加线性布局为根控件)

    2.父控件:就是子控件的相反意思,比如B是A的子控件,那么A是B的父控件


    知识积累:

    1.设置控件大小时候(暂时不说明比例布局、自适应布局等),默认单位为px,除了固定大小外还可以设置为 -1(最大化,与父控件的宽度/高度相同),-2(自适应,根据自身需要的大小自动调整)


    三、线性布局的权重

    (建议自己试试,不然一时说不清)

      你是否遇到过这种问题?想要让几个控件之间成比例显示(这里默认不使用比例布局),你可以用获取屏幕大小然后计算,但是太麻烦了,不如让我们试试线性布局的权重。

      假设有一个线性布局内有AB两个子控件:

        情况1:当内部子控件(A,B)的宽度之和大于父控件的总宽度时,A的权重/(A的权重+B的权重)比例的值越大,当前控件所占空间越小。

        情况2:当内部子控件(A,B)的宽度之和小于父控件的总宽度时,A的权重/(A的权重+B的权重)比例的值越大,当前控件所占空间越大。

      在子控件在方向上的和没有超出父控件时:如果只有一个子控件且设置了权重,那么子控件会在设置的方向上占满空间;如果有多个子控件,但子控件并不都设置了权重(设置一个或多个但是并没有全部设置),那么会让没有设置权重的自适应大小,然后余下的位置给设置权重的分配。

      权重的属性值只能设置为整数形式!!!

      (PS:这里指的空间均为线性布局内的位置,对于父控件外的位置,无权干涉,它们的领地就父控件具有的这么多)


     四、重力

      就好像我们地球上有重力,布局内也有重力,设置重力后子控件会依次按照重力排列,比如默认的重力为"居左|顶部",那么就会以此方式排列,当然也可以自己设置(具有的值请移步此教程第一期)。

       在重力的设置中,多个属性值可以用 | 连接,同时使用,但是有的属性会冲突不可以共用。

       重力的使用与父控件的宽高也有关系,如果你的父控件宽高都为确定的(包括设置为-1),重力可以设置"垂直方向居中"、"水平方向居中",也可以设置为"居中",但是如果宽/高不确定,那么与那一方向上有关的重力将不能使用。


    未完待续。


    3
    3
    3