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

https://www.jianshu.com/p/17ec9bd6ca8a

https://www.jianshu.com/p/514324f41382


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容