Android布局:RelativeLayout

    android开发中,常用布局种类主要有RelativeLayout、ConstraintLayout、LinearLayout、FrameLayout等几种布局方法。

今天我们就来梳理一下RelativeLayout布局的常用属性方法。


RelativeLayout

    relativelayout又称为相对布局。它是通过相对定位的方法控制组件出现的位置。

基本属性:

图1 用于控制组件内元素的布局方式

android:gravity常用的值及其意义如下:

center_horizontal  :子元素按照水平方向居中展示。

center_vertical:子元素按照垂直方向居中展示。

center:子元素在组件内正中展示。


(relativelayout中的组件)根据父容器定位属性:

图2 通过指定组件与父容器相对位置来确定位置

各属性的意义如下:

layout_alignParentTop //如果设置为true,则组件贴近父容器顶部

layout_alignParentBottom //如果设置为true,则组件贴近父容器底部

layout_alignParentStart //如果设置为true,则组件贴近父容器开始方向

layout_alignParentEnd //如果设置为true,则组件贴近父容器接收方向

layout_centerInParent //如果设置为true,则组件位于父容器中心

layout_centerHorizontal //如果设置为true,则组件水平方向居中显示

layout_centerVertical //如果设置为true,则组件垂直方向居中显示

layout_alignParentLeft //如果设置为true,则组件贴近父容器左边,不建议使用

layout_alignParentRight //如果设置为true,则组件贴近父容器右边,不建议使用

【注释1 】

 layout_alignParentLeft /layout_alignParentStart 区别与联系:

手机有两种阅读方式,从左到右(left-to-right,即LTR)和从右到左(right-to-left,即RTL)。

简单来说,对于LTR,start、end等同于left、right;而对于RTL,则相反。

为了使用RTL布局,需要实现以下两点:在AndroidManifest中声明支持RTL布局:在<application>元素下添加android:supportsRtl="true"声明。在App中用start、end来替代left、right 

如果用4.2及以上编译(targetSdkVersion或者minSdkVersion大于等于17),则start、end来替代left、right,例如:android:paddingLeft应改为android:paddingStart

如果用4.2以下编译(targetSdkVersion或者minSdkVersion小于等于16),两者都必须使用,例如:需要同时使用android:paddingLeft和android:paddingStart(因为包含start 、End字符的属性无法识别)

【注释2】

layout_alignParentTop /layout_alignParentBottom 如果同时使用会对子元素进行拉伸以达到贴近父容器上边界与下边界的效果。

程中如果不是为了拉伸组件,不要同时使这两个属性的值为true,同样还有属性layout_alignParentStart /layout_alignParentEnd  、layout_alignParentLeft /layout_alignParentRight 

(relativelayout中的组件)根据兄弟组件定位属性:

图3 根据设置处于相同容器中的组件的相对位置进行定位

各属性以及意义如下:

layout_above //值为兄弟组件的id,根据id设定组件置于兄弟组件的上面

layout_below //值为兄弟组件的id,根据id设定组件置于兄弟组件的下面

layout_toStartOf//值为兄弟组件的id,根据id设定组件位于兄弟组件的左边

layout_toEndOf //值为兄弟组件的id,根据id设定组件位于兄弟组件的右边

layout_alignTop //值为兄弟组件的id,根据id设定组件对齐兄弟组件的上边界

layout_alignBottom //值为兄弟组件的id,根据id设定组件对齐兄弟组件的下边界

layout_alignStart //值为兄弟组件的id,根据id设定组件对齐兄弟组件的开始边界

layout_alignEnd //值为兄弟组件的id,根据id设定组件对齐兄弟组件的结束边界

layout_alignLeft  //值为兄弟组件的id,根据id设定组件对齐兄弟组件的左边界,不建议使用

layout_alignRight//值为兄弟组件的id,根据id设定组件对齐兄弟组件的右边界,不建议使用

layout_toLeftOf //值为兄弟组件的id,根据id设定组件位于兄弟组件的左边,不建议使用

layout_toRightOf  //值为兄弟组件的id,根据id设定组件位于兄弟组件的右边,不建议使用

【注释3】

layout_alignStart /layout_alignLeft  的区别与联系:

与注释1使用方法类似,见注释1

(relativelayout中的组件)设定组件与父容器的边距:

图4 设定子元素与容器的边距

各属性以及意义如下:

layout_marginTop //值为父容器的上边距,意义为组件与父容器的最小距离。

layout_marginBottom  //值为父容器的下边距,意义为组件与父容器的最小距离。

layout_marginStart  //值为父容器的开始边距,意义为组件与父容器的最小距离。

layout_marginEnd //值为父容器的结束边距,意义为组件与父容器的最小距离。

layout_marginLeft  //值为父容器的左边距,意义为组件与父容器的最小距离

layout_marginRight  //值为父容器的右边距,意义为组件与父容器的最小距离

【注释4】

layout_marginStart /layout_marginLeft 的区别与联系:

与注释1使用方法类似,见注释1

(relativelayout中的组件)设定组件内部元素的排列方式:

图5 设定组件内部元素的内边距

各属性以及意义如下:

padding //值为内部元素的上下左右内边距

paddingTop  //值为内部元素的上内边距

paddingBottom  //值为内部元素的下内边距

paddingStart  //值为内部元素的开始内边距

paddingEnd  //值为内部元素的结束内边距

paddingLeft  //值为内部元素的左内边距

paddingRight  //值为内部元素的下右内边距

【注释5】

paddingStart /paddingLeft  的区别与联系:

与注释1使用方法类似,见注释1


参考资料:

https://www.runoob.com/w3cnote/android-tutorial-linearlayout.html

https://www.runoob.com/w3cnote/android-tutorial-relativelayout.html

//www.greatytc.com/p/17ec9bd6ca8a

//www.greatytc.com/p/514324f41382


喜欢我的文章就给我点个赞吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容