安卓开发学习笔记01_布局
- 特别声明
- 布局管理器
- 线性布局(LinearLayout)
- 例子
- 相对布局(RelativeLayout)
- 例子
特别声明
该笔记是笔者通过学习 天哥在奔跑安卓教学视频 时所编写的
布局管理器
学习布局,建议先查阅 (盒子模型) 这样能更好地理解与掌控该知识点,以下例子均可直接复制到 activity_main.xml 下,可以直观看到效果
线性布局(LinearLayout)
- 常用属性
- android:id
给该控件设置一个唯一标识 - android:layout_width
- android:layout_height
- android:background
- android:layout_margin
外部元素的边距 - android:layout_padding
内部元素的边距 - android:orientation
设置布局方向
例子
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!-- android:orientation 设置了垂直方向上的布局 -->
<LinearLayout
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_marginBottom="20dp"
android:background="#000"
android:padding="20dp">
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0033" />
<!-- match_parent 匹配父元素,表示继承父元素该属性 -->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_margin="15dp"
android:background="#0066FF"
android:gravity="left"
android:orientation="horizontal">
<!--gravity 用于给子元素布局-->
<!--android:layout_weight="1" 权重,跟flex = 1 一样-->
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#000" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#FF0033" />
</LinearLayout>
</LinearLayout>
效果图
相对布局(RelativeLayout)
可以认为是 跟 选定组件(id) 的一个方向对齐
- 常用属性
- android:layout_toLeftOf
在谁的左边 - android:layout_toRightOf
在谁的右边 - android:layout_alignBottom
跟谁底部对齐 - android:layout_alignParentBottom
跟父组件底部对齐 - android:layout_below
在谁的下面
例子
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/view_1"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#000">
<!-- android:layout_alignParentBottom="true"-->
<!-- android:layout_alignParentRight="true">-->
</View>
<View
android:id="@+id/view_2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_toRightOf="@+id/view_1"
android:background="#FF0033"
android:layout_below="@id/view_1"
>
</View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_below="@id/view_2"
android:orientation="horizontal"
android:background="#0066FF"
android:padding="15dp">
<View
android:layout_width="100dp"
android:layout_height="match_parent"
android:background="#FF0033"></View>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:padding="15dp">
<View
android:id="@+id/view_3"
android:layout_width="100dp"
android:layout_height="match_parent"
android:background="#FF9900"></View>
<View
android:id="@+id/view_4"
android:layout_width="100dp"
android:layout_height="match_parent"
android:background="#FF9900"
android:layout_toRightOf="@id/view_3"
android:layout_marginLeft="10dp"
></View>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
效果图