安卓开发学习5-1:布局管理器:相对布局管理器
相对布局管理器RelativeLayoutRelativeLayout解析RelativeLayout(相对布局管理器)的xml文件解析命名空间布局宽高其他布局控制android:paddingtools.contextandroid:gravityandroid:layout_gravityandroid:ignoreGravityRelativeLayout.LayoutParams确定位置确
相对布局管理器RelativeLayout
RelativeLayout解析
相对布局管理器,通过id设置定位的基点,然后通过位置属性设置其他组件的位置,例如一个课室,首先定位小明的走作为,然后定位小红的座位的时候,可以使用使用“小红在小明前面”这类型的语句去定位小红的位置
RelativeLayout(相对布局管理器)的xml文件解析
<?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"
tools:context=".MainActivity"
android:padding="16dp"
android:gravity="center"
android:ignoreGravity="@id/text_view"
>
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
</RelativeLayout>
命名空间
- xmlns:android=“http://schemas.android.com/apk/res/android”:表示android命名空间,也就是以下用的android:layout_width都是来自这个命名空间,相当于一个仓库
- xmlns:app=“http://schemas.android.com/apk/res-auto”:app命名空间
- xmlns:tools=“http://schemas.android.com/tools”:tools命名空间
上述一般是默认的,如果没有定义,那么就不能使用对应命名空间的东西,例如没有定义android命名空间,那么android:layout_width就无效
布局宽高
android:layout_width="match_parent"
android:layout_height="match_parent"
包括两个
- match_parent:沾满父容器
- wrap_parent:根据内容变化
其他布局控制
android:padding
android:padding="16dp"
单位可以使用一般的单位,如16dp,也可以是尺寸资源的内容,可以写成
android:padding="@dimen/cardview_compat_inset_shadow"
tools.context
tools.context
tools:context=".MainActivity"
指定使用该布局的activity
android:gravity
android:gravity是针对元素自身内部
android:layout_gravity
android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什么位置
android:ignoreGravity
android:ignoreGravity="@id/text_view"
指定哪些元素不受gravity影响,上述指定id为text_view的布局组件不受影响
RelativeLayout.LayoutParams
为了更好控制子组件中的分布方式,可以使用内部类RelativeLayout.LayoutParams
确定位置
相对于某个组件的位置的上下左右
<TextView
android:text="Hello"
android:id="@+id/hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
<TextView
android:text="world"
android:layout_below="@id/hello"
android:id="@+id/world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
world在hello的下边
在布局中的水平居中、父容器居中、垂直居中
确定对齐方式
对齐父容器的下左右上
对齐某个组件的下左右上,如下world组件对齐hello组件的左侧
<TextView
android:text="Hello"
android:id="@+id/hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
<TextView
android:text="world"
android:layout_alignLeft="@id/hello"
android:id="@+id/world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
相对布局实例
1、需求:实现以下
2、控制文字在屏幕中央,然后再定位取消按钮相对位置是文字的右下,确定按钮相对按钮的左边,文字的下边
<?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"
tools:context=".MainActivity"
>
<TextView
android:text="发现Android Studio新版本,是否需要更新"
android:id="@+id/tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
></TextView>
<Button
android:text="取消"
android:layout_alignRight="@id/tip"
android:layout_below="@id/tip"
android:id="@+id/cancel"
android:layout_width="80dp"
android:layout_height="40dp"
android:layout_marginLeft="10dp"
android:textSize="10dp"></Button>
<Button
android:text="确定"
android:layout_toLeftOf="@id/cancel"
android:layout_below="@id/tip"
android:id="@+id/confirm"
android:layout_width="80dp"
android:layout_height="40dp"
android:textSize="10dp"
></Button>
</RelativeLayout>
更多推荐
所有评论(0)