
LinearLayout:线性布局
一、线性布局介绍
新建一个工程

然后我们默认的布局,是相对布局,

相对布局的意思是我的控件可以在里面随意放置

那如果把这个RelativeLayout 改了呢?

不用这相对布局,而是用线性布局,
我们把代码都删掉
然后直接把 RelativeLayout 改成 LinearLayout

现在我这个布局已经好了

我们再往里面添加东西,发现只能在一条横线上添加

如果我一个横线放满了,放下一排可以吗?
不可以

这就是线性布局,之能在横线上存放。
那我现在希望变成竖线存放怎么办呢?
这就涉及到了 LinearLayout的属性 orientation
orientation:布局中组件的排列方式,有horizontal(水平,默认),vertical(竖直)两种方式
我们修改一下代码

然后现在我们想把 hello world 右面放也不行,只能跑到后面来

这就是我们说的线性布局,要么是横线,要么是竖线,只有这两种情况
二、线性布局weight属性
该属性是用来等比例划分区域,
最简单的用法:要等比划分,分谁,谁为0,weight按比例即可
我们开始的代码

在里面来一个线性布局 ,
因为它的父控件是一个相对布局,所以可以用 android:layout_centerInParent="true"

运行一下

框架

现在的代码,结构

默认是水平方向上排布控件
加一句 android:orientation="horizontal"


运行结果

然后把 android:layout_height="35dp" 改成 android:layout_height="70dp"
然后再加一句 android:orientation="vertical" 把他切成两部分


运行一下

同样的右面的也加上EditText

运行一下

他会随着输入的增长而增长

三、线性布局微调参数gravity
gravity:控制组件所包含的子元素的对齐方式,可多个组合,如(left|buttom)
Layout_gravity:控制该组件在父容器里的对齐方式
线性布局如何微调子控件的位置,现在我们想让账号和密码居中

运行一下,在竖直方向上居中了。但没有在水平方向上居中

然后用一个管道可以继续来 android:gravity="center|center_horizontal"

运行结果

现在完整的代码



我们观察一下textview 的大小有多大,给他来个颜色
加上 android:background="#778899" android:background="#223344"

运行一下

说明刚才我们够居中了,android:gravity="centerl" 已经能让“账号” “密码”居中了
把android:gravity="center|center_horizontal" 改成 android:gravity="center"
只是水平方向上的大小,没有充满父控件
那把android:layout_width="wrap_content" 改成 android:layout_width="match_parent"

运行一下
( 然后把密码的颜色也改成灰色)

如果我们在加一个id号 第48行



运行一下

然后把 android:layout_height="70dp" 改成 android:layout_height="100dp"
在加上一个
<EditText
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="0dp"
/>

运行一下

可以把颜色都去掉,
再把 android:layout_width="wrap_content" 改成 android:layout_width="match_parent"

可以加个背景

然后把
换成

运行一下

如果你感觉屏幕太方块了
把 android:layout_width="match_parent" 改成 android:layout_width="400dp" 第9行

运行一下

四、线性布局divider
该属性用于为LinearLayout设置分割线图片,通过showDividers来设置分割线的所在位置,有四个可选值none,middle,begining,end;当然你还可以通过
divider为LinearLayout设置分割线的图片
showDividers设置分割线所在的位置,有四个可选值:none,middle,begining,end
dividerPadding 设置分割线的padding
先给res 下面的 drawable

然后选择shape

系统分配的代码

我们选择它是一条线,
然后再加上颜色 <stroke android:color="#000000"/>

比如我现在要给 “账号” “密码” “ID号” 下面画一条线
加上一句 android:divider="@drawable/fenge" 第20行

运行结果

id下面没有线,android:showDividers="middle" 改成 android:showDividers="middle|end"

运行结果

如果后面也想加个横线

运行结果

现在完整的代码


