一、关于布局
- 布局是用于放置控件的容器
- 布局可以嵌套,所以可以通过布局完成比较复杂的界面实现
二、4种布局方式总览
- LinearLayout: 即线性布局,非常常用
- RelativeLayout: 即相对布局,非常常用
- FrameLayout: 即桢布局,应用场景比LinearLayout和RelativeLayout少很多
- TableLayout: 即表格布局,不常用
三、LinearLayout需要注意的地方
1、关于布局方向,因为是线性的,所以有方向,在布局页面中通过android:orientation属性进行设定
- 垂直方向: android:orientation="vertical"
- 水平方向: android:orientation="horizontal"
2、关于容易混淆的两个属性:
- android:layout_gravity: 指定控件在布局中的对齐方式
- android:gravity: 指定控件中的文字在控件中的对齐方式
3、关于自适配与android:layout_weight属性
- android:layout_weight属性允许我们使用比例的方式来指定的控件的大小,在屏幕的适配方面起到非常重要的作用
四、RelativeLayout虽然使用的属性很多,但是总结起来有三类
- 以父布局为参照对象: layout_alignParentLeft | layout_alignParentRight | layout_alignParentTop | layout_alignParentBottom | layout_centerInParent
- 以某控件为参照对象: layout_above | layout_below | layout_toLeftOf | layout_toRightOf
- 以某控件的边缘为参照对象: layout_alignLeft | layout_alignRight | layout_alignTop | layout_alignBottom
五、FrameLayout布局很奇怪,它没有任何定位方式,所有的控件都会放在布局的左上角,那个这种布局方式的应用场景是什么呢?
六、TableLayout需要注意的地方
- 用<TableRow></TableRow>指定行节点;
- 列是不用指定的,只要在TableRow中添加一个控件,就添加了一列;
- TableRow中的控件不能指定宽度,通过android:stretchColumns属性来解决这个问题
- 如果某一行的列数和其他行不同时,那么要通过android:layout_span属性来合并单元格
TableLayout的示例代码
<TableLayout xmlns:android="http://schema.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:stretchColumns="1" > <TableRow> <TextView android:layout_height="wrap_content" android:text="Account:" /> <EditText android:layout_height="wrap_content" android:hint="Input your account" /> </TableRow> <TableRow> <TextView android:layout_height="wrap_content" android:text="Password:" /> <EditText android:layout_height="wrap_content" android:inputType="textPassword" /> </TableRow> <TableRow> <Button android:id="@+id/login" android:layout_height="wrap_content" android:layout_span="2" android:text="Login" /> </TableRow> </TableLayout>
时间: 2025-01-13 01:14:32