Android应用开发之线性布局
2022-03-07 本文已影响0人
Lee_5566
image.png
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”,即不显示分割线。
使用方式:
- 新建一个固有的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” | 只有最后一个子控件有一条分割线 |