目录
- 一、相对布局
- (一)概述
- (二)注意事项
- (三)常用属性
- (四)测试
- 二、练习任务四
- (一)准备
- (二)具体实施
- (三)效果展示
- 三、补充内容
写在前面的话
1、内容参考自B站安卓相关学习视频以及网络。
2、内容如果有不对的,希望可以指出或补充。
3、巩固内容。
一、相对布局
(一)概述
相对布局(RelativeLayout):也是常用布局之一,最为灵活,可以设置某一个控件相对于包裹它的(父容器)或者是和它一起被包裹的另一个控件(兄弟控件)的位置。
适用于较复杂的布局,主要针对的是线性布局嵌入多层的问题。一般采用 RelativeLayout + LinearLayout的layout_weight属性
来搭配使用。
(二)注意事项
1、相对于兄弟控件的位置,必须通过ID来进行指定。
2、指定位置关系时,引用的ID必须在引用之前被定义好(先定义,后引用)。就是引用了一个id,那这个id一定是要存在的。
3、相对于父容器的定位,xx居中对齐方式取false时,就相当于是恢复成默认位置(左上)。
4、再次强调,默认位置是左上。
(三)常用属性
相对布局(RelativeLayout)的部分属性,整理如下。
| 相对于 | 属性 | 作用 | 值 |
| 父容器 |
<center>android:layout_alignParentBottom</center>
<center>靠下</center>
<center>true或false</center>
<center>android:layout_centerInParent</center>
<center>垂直又水平居中</center>
<center>android:layout_centerHorizontal</center>
<center>水平居中</center>
| 兄弟控件 |
<center>android:layout_toLeftOf</center>
<center>在控件左边</center>
<center>兄弟控件的id</center>
<center>android:layout_above</center>
<center>在控件上边</center>
<center>android:layout_alignBottom</center>
<center>底边对齐</center>
注:
1.属性名称带有parent的表示是父容器(可以以此来判断)。
2.相对于父容器的值为flase时表示作用相反(不包括居中方式),如android:layout_alignParentBottom="false"就是靠上的效果。
(四)测试
1、相对于父容器
① android:layout_alignParentBottom=“true”,效果如下。
在这里插入图片描述
② android:layout_centerInParent=“true”,效果如下。
在这里插入图片描述
③ android:layout_centerHorizontal=“true”,效果如下。
在这里插入图片描述
④ 组合测试
这里我试的是 android:layout_centerHorizontal=“true” + android:layout_alignParentBottom=“true”,效果如下。
在这里插入图片描述
2、相对于兄弟控件
为了方便看出效果,将控件1(Test1)设置到界面居中位置。
① android:layout_toLeftOf ="@+id/引用的已有id名称",效果如下。
在这里插入图片描述
② android:layout_above="@+id/引用的已有id名称",效果如下。
在这里插入图片描述
③ android:layout_alignBottom="@+id/引用的已有id名称",效果如下。
在这里插入图片描述
二、练习任务四
这里是安卓基础学习Day05的部分。
因为是练习的相对布局,所以放到这里来。
(一)准备
1、文件准备
需要新建(准备)的文件,如下。
在这里插入图片描述
2、界面划分
一共九行,前面八行里面总体包含有两个控件(一、三、八行是标签+下拉列表,二行是标签+编辑框,剩下的是标签+单选按钮组),最后一行是用的一个线性布局里面包含有单选按钮。
在这里插入图片描述
(二)具体实施
1、背景边框
① 总体的一个背景框
在这里插入图片描述
② 确定按钮的背景框
在这里插入图片描述
2、布局文件(relative_test.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg"
android:paddingLeft="5dp"
tools:context=".MainActivity">
<RelativeLayout
android:id="@+id/row1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:padding="5dp"
>
<TextView
android:id="@+id/t1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_row1"
android:textSize="20sp"
android:layout_centerVertical="true"
/>
<!--下拉 entries-->
<Spinner
android:id="@+id/spinner_row1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/date"
android:layout_marginLeft="128dp"
android:layout_alignBottom="@+id/t1"
android:background="@drawable/bg_shape"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/row2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:padding="5dp"
android:layout_marginTop="5dp"
android:layout_below="@+id/row1"
>
<TextView
android:id="@+id/t2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="数量:"
android:textSize="20sp"
android:layout_centerVertical="true"
/>
<EditText
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_shape"
android:layout_marginLeft="128dp"
android:layout_alignBottom="@+id/t2"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/row3"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:padding="5dp"
android:layout_marginTop="5dp"
android:layout_below="@+id/row2"
>
<TextView
android:id="@+id/t3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_row3"
android:textSize="20sp"
android:layout_centerVertical="true"
/>
<!--下拉 entries-->
<Spinner
android:id="@+id/spinner_row2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_shape"
android:entries="@array/number"
android:layout_marginLeft="128dp"
android:layout_alignBottom="@+id/t3"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/row4"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:padding="5dp"
android:layout_marginTop="5dp"
android:layout_below="@+id/row3"
>
<TextView
android:id="@+id/t4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="变速箱:"
android:textSize="20sp"
android:layout_centerVertical="true"
/>
<!--单选按钮部分-->
<RadioGroup
android:id="@+id/row4_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2"
android:layout_marginLeft="128dp"
>
<RadioButton
android:id="@+id/radioBtn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自动"
android:layout_weight="1"
/>
<RadioButton
android:id="@+id/radioBtn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="手动"
android:layout_weight="1"
/>
</RadioGroup>
</RelativeLayout>
<RelativeLayout
android:id="@+id/row5"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:padding="5dp"
android:layout_marginTop="5dp"
android:layout_below="@+id/row4"
>
<TextView
android:id="@+id/t5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="轮骰:"
android:textSize="20sp"
android:layout_centerVertical="true"
/>
<!--单选按钮部分-->
<RadioGroup
android:id="@+id/row5_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2"
android:layout_marginLeft="128dp"
>
<RadioButton
android:id="@+id/radioBtn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="烤漆"
android:layout_weight="1"
/>
<RadioButton
android:id="@+id/radioBtn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电镀"
android:layout_weight="1"
/>
</RadioGroup>
</RelativeLayout>
<RelativeLayout
android:id="@+id/row6"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:padding="5dp"
android:layout_marginTop="5dp"
android:layout_below="@+id/row5"
>
<TextView
android:id="@+id/t6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中控:"
android:textSize="20sp"
android:layout_centerVertical="true"
/>
<!--单选按钮部分-->
<RadioGroup
android:id="@+id/row6_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2"
android:layout_marginLeft="128dp"
>
<RadioButton
android:id="@+id/radioBtn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="低配"
android:layout_weight="1"
/>
<RadioButton
android:id="@+id/radioBtn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="高配"
android:layout_weight="1"
/>
</RadioGroup>
</RelativeLayout>
<RelativeLayout
android:id="@+id/row7"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:padding="5dp"
android:layout_marginTop="5dp"
android:layout_below="@+id/row6"
>
<TextView
android:id="@+id/t7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="刹车:"
android:textSize="20sp"
android:layout_centerVertical="true"
/>
<!--单选按钮部分-->
<RadioGroup
android:id="@+id/row7_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="128dp"
android:orientation="horizontal"
android:weightSum="2"
>
<RadioButton
android:id="@+id/radioBtn7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="鼓式制动器"
android:layout_weight="1"
/>
<RadioButton
android:id="@+id/radioBtn8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="盘式制动器"
android:layout_weight="1"
/>
</RadioGroup>
</RelativeLayout>
<RelativeLayout
android:id="@+id/row8"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:padding="5dp"
android:layout_marginTop="5dp"
android:layout_below="@+id/row7"
>
<TextView
android:id="@+id/t8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_row8"
android:textSize="20sp"
android:layout_centerVertical="true"
/>
<!--下拉 entries-->
<Spinner
android:id="@+id/spinner_row3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/type"
android:background="@drawable/bg_shape"
android:layout_marginLeft="128dp"
android:layout_alignBottom="@+id/t8"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/row9"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:padding="5dp"
android:layout_marginTop="5dp"
android:layout_below="@+id/row8"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_bg"
android:layout_centerInParent="true"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定"
android:backgroundTint="@color/white"
android:textColor="@color/black"
android:textSize="20sp"
/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
3、下拉列表
values文件夹下的strings.xml。
<!--设置下拉菜单-->
<resources>
<!--项目的名称(显示在活动窗口上)-->
<string name="app_name">练习任务4</string>
<string name="title_row1">交付时间:</string>
<!--定义一个名为date的数组-->
<string-array name = "date">
<!--默认是显示第一个item-->
<item> 2019/09/06 ▼</item>
<item> 2019/10/06</item>
<item> 2020/09/06</item>
<item> 2020/10/06</item>
<item> 2020/11/06</item>
<item> 2020/12/06</item>
<item> 2021/01/11</item>
</string-array>
<string name="title_row3">发动机排量:</string>
<!--定义一个名为number的数组-->
<string-array name = "number">
<item> 1.0 ▼</item>
<item> 2.0</item>
<item> 3.0</item>
<item> 4.0</item>
<item> 5.0</item>
<item> 6.0</item>
<item> 7.0</item>
</string-array>
<string name="title_row8">悬挂:</string>
<!--定义一个名为type的数组-->
<string-array name = "type">
<item> 独立悬挂系统 ▼</item>
<item> 主动悬挂系统</item>
<item> 横臂式悬挂系统</item>
<item> 纵臂式悬挂系统</item>
<item> 独式悬挂系统</item>
<item> 多连杆式悬挂系统</item>
<item> 麦佛逊式悬挂系统</item>
</string-array>
</resources>
(三)效果展示
运行效果,如下。
在这里插入图片描述
三、补充内容
1、layout_weight属性是线性布局(LinearLayout)特有的属性。
2、关于Android的单位:
sp(scaled pixels,可缩放像素)一般是作为文字大小的单位,dp(density-independent pixels,密度无关像素)则是作为其它元素的单位 。
dp与sp
3、关于控件的id名称
一般都是用的 @+id/xx
来定义id和引用已有id
- @+id/自定义id名称:创建新的id
- @id/已有的id名称 或者 @+id/已有的id名称:引用id
网友评论