1.1.1_线性布局_LinearLayout

一、常用属性

1、orientation

布局中组件的排列方式,有以下两种方式:

  • horizontal(水平)
  • vertical(竖直)
2、gravity

该组件包含子元素的对齐方式:top、bottom、left、right
可以同时指定多个值,使用 | 隔开,例如:left|bottom

3、layout_gravity

和上一个属性用法类似,不过该属性代表:本控件在父容器中的对齐方式

4、layout_width

表示该控件的宽度,一般取值: match_parentwrap_content

5、layout_height

表示该控件的高度,一般取值: match_parentwrap_content

6、id

标识该控件的唯一标识,同一个xml文件里面id是不可重复的。但是不同文件里面id是可以重复的

7、background

该属性可以为控件设置背景图或直接给一个颜色作为背景

该属性是为 设置权重的

  • 若为子控件设置属性 layout_width="0dp"layout_weight="1" ,则该控件就会占据父控件横向上的所有剩余空间
  • 同理如果设置 layout_height="0dp"layout_weight="1" ,则该控件就会占据父控件纵向上的所有剩余空间
  • 如果有多个同级控件都设置了 layout_weight 属性,则按照对应的比例划分
  • 如果想横向按比例划分,但设置了 layout_width="wrap_content",此时分两种情况:
    • 如果按权重分配的空间不够显示该控件,则按照 wrap_content 来分配
    • 否则,按照权重分配
  • 如果想横向按比例划分,但设置了 layout_width="match_parent",此时需要计算实际分配到的空间:
设有三个控件按权分配父控件的横向空间,但宽度都设置为 match_parent,代码如下:



    

    

    



计算实际分配的宽度步骤:
step 1:有三个控件是 match_parent,但是屏幕只有一个,所以 1 - 3 = -2 match_parent
step 2:三个控件的权重比分别为:1/6, 2/6, 3/6
stip 3:分配到的空间分别为:1 - 2 * (1/6) = 2/3 match_parent、1 - 2 * (2/6) = 1/3 match_parent、1 - 2 * (3/6) = 0 match_parent
9、divider

该属性设置在 LinearLayout 标签中,用于指定分割线

  • divider="@drawable/line" 指定分割线的图片,指定颜色不显示
  • showDividers="beginning" 指定分割线显示的位置
  • dividerPadding="10dp" 指定分割线两端到边界的距离

如果 LinearLayout 是横向布局,则分割线也是横向的。同理,LinearLayout 是纵向布局,则分割线也是纵向的。
showDividers 属性有 4 种取值:

  • none(分割线不显示)
  • beginning(在所有子布局的最前面或最上面)
  • end(在所有子布局的最后面或最下面)
  • middle(只有子布局之间才会插入一条分割线)

  • LinearLayout 设置 orientation="vertical" 时,layout_gravity 在水平方向上的设置才起作用,垂直方向的设置不起作用。即只有 leftrightcenter_horizontal 是生效的。
  • LinearLayout 设置 orientation="horizontal" 时,layout_gravity 在竖直方向上的设置才起作用,水平方向的设置不起作用。即只有 topbottomcenter_vertical 是生效的。

你可能感兴趣的:(1.1.1_线性布局_LinearLayout)