Android应用开发之线性布局

Android中有六大布局,分别是:

  • LinearLayout(线性布局)
  • RelativeLayout(相对布局)
  • TableLayout(表格布局)
  • FrameLayout(帧布局)
  • AbsoluteLayout(绝对布局)
  • GridLayout(网格布局)

今天我们要讲解的就是第一个布局,LinearLayout(线性布局)

LinearLayout

LinearLayout又称作线性布局,是一种非常常用的布局。

这个布局会将它所包含的控件在线性方向上依次排列。

既然是线性排列,肯定就不仅只有一个方向,这里一般只有两个方向:水平方向和垂直方向。

属性

LinearLayout(线性布局)常用到的属性简单归纳一下:

属性名 解释
android:orientation 指定线性布局的方向(水平或者垂直)
android:width 线性布局的容器宽度
android:height 线性布局的容器高度
android:background 线性布局的背景
android:gravity 线性布局中,子容器相对于父容器所在的位置
android:layout_gravity 容器相对它的父元素的对齐方式
android:layout_weight 权重,按比例来分配控件占用父控件的大小
android:divider 分割线
android:showDivider 分割线的位置
android:dividerPadding 分割线的padding
orientation
属性值 解释
android:orientation="horizontal" 指定线性布局方向:水平
android:orientation="vertical" 指定线性布局方向:垂直
width
属性值 解释
android:width="xxxdp" 指定线性布局的容器宽度为:xxxdp
android:width="wrap_content" 指定线性布局的容器宽度为:根据容器内容宽度大小来填充屏幕宽度
android:width="match_parent" 指定线性布局的容器宽度为:撑满整个屏幕宽度
height
属性值 解释
android:height="xxxdp" 指定线性布局的容器高度为:xxxdp
android:height="wrap_content" 指定线性布局的容器高度为:根据容器内容高度大小来填充屏幕高度
android:height="match_parent" 指定线性布局的容器高度为:撑满整个屏幕高度
background
属性值 解释
android:background="#000" 指定线性布局的背景为:黑色(rgb颜色)
android:background="@android:color/black" 指定线性布局的背景为:黑色(引用android系统自带的原始黑色)
andrid:background="@color/colorPrimary" 指定线性布局的背景为:(根据res/color.xml 中的colorPrimary所定义的颜色设置)
gravity

自身是父容器

属性值 解释
android:gravity="center" 指定线性布局中,子容器相对于父容器所在的位置为:正中心
android:gravity="cente_verticalr" 指定线性布局中,子容器相对于父容器所在的位置为:垂直方向的正中心
android:gravity="center_horizontal" 指定线性布局中,子容器相对于父容器所在的位置为:水平方向的正中心
android:gravity="left" 指定线性布局中,子容器相对于父容器所在的位置为:最左边(默认)
android:gravity="right" 指定线性布局中,子容器相对于父容器所在的位置为:最右边
android:gravity="top" 指定线性布局中,子容器相对于父容器所在的位置为:最上方(默认)
android:gravity="bottom" 指定线性布局中,子容器相对于父容器所在的位置为:最下方
layout_gravity

自身是子容器

属性值 解释
android:gravity="center" 指定线性布局中,子容器相对于父容器所在的位置为:正中心
android:gravity="cente_verticalr" 指定线性布局中,子容器相对于父容器所在的位置为:垂直方向的正中心
android:gravity="center_horizontal" 指定线性布局中,子容器相对于父容器所在的位置为:水平方向的正中心
android:gravity="left" 指定线性布局中,子容器相对于父容器所在的位置为:最左边(默认)
android:gravity="right" 指定线性布局中,子容器相对于父容器所在的位置为:最右边
android:gravity="top" 指定线性布局中,子容器相对于父容器所在的位置为:最上方(默认)
android:gravity="bottom" 指定线性布局中,子容器相对于父容器所在的位置为:最下方
layout_weight

当我们给一个view设置了android:layout_weight属性,意味着赋予它话语权,常规思维就是谁的weight大,谁说了算(空间占比大)。

属性值 解释
android:layout_weight="2" 该单元权重为2
divider

这个属性可以在LinearLayout的每个子布局直间添加一个“drawable”作为分割线,这个drawable必须有设定好的高度或者宽度,因此不能直接设置为“@color/….”

这个属性要和android:showDividers一起使用才会生效
android:showDividers有“begining”,“middle”,“end”,“none”四种值。默认值为“none”,即不显示分割线。

使用方式:

  1. 新建一个固有的width/height的Drawable:
<?xml version="1.0" encoding="utf-8"?>  
<shape xmlns:android="http://schemas.android.com/apk/res/android"  
    android:shape="rectangle">  
  
    <size  
        android:width="@dimen/spacing_medium"  
        android:height="@dimen/spacing_medium" />  
  
    <solid android:color="@android:color/transparent" />  
  
</shape>  

设置LinearLayout的android:divider="@drawable/spacer_medium",并设置android:showDividers

android:showDividers
属性值 解释
android:showDividers=”beginning” 只有第一个子控件上面有一条分割线
android:showDividers=”middle” 每个子空间之间都有一条分割线
android:showDividers=”end” 只有最后一个子控件有一条分割线
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章