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"
运行结果
如果后面也想加个横线
运行结果
现在完整的代码