你以为你已经掌握了RelativeLayout

最近被ConstraintLayout刷屏了。因为有了它,百分比布局整个包都废了;因为有了它,Android Studio的Hello World已经默认改为它了(以前是RelativeLayout);因为它,对布局而言,几乎是万能的;

今天准备要研究下,大概浏览了下,发现很多属性跟RelativeLayout相似(好吧,仅仅是拼写),继而又悲催的发现,自己其实连RelativeLayout都不能算的上是熟练掌握。。

废话不多说,上干料:

你以为你已经掌握了RelativeLayout_第1张图片

alignParentXxx的属性有6个,分别是上,下,左,右,开始,结束

你以为你已经掌握了RelativeLayout_第2张图片

但是当你使用alignParentLeft时,会有如上提示:

简而言之,17以上的SDK,所有left属性,都会对应一个start属性;所有right属性,都会对应一个end属性。

为什么捏?

因为有些语种,它的对齐方式是从右往左对齐(比如阿拉伯语)。如果你将left改为start,则当该view相对于父窗体对齐时,会自动根据当前系统的语种而自动选择相应的对齐方式。

如果你使用left,那么无论什么语种,都会从左往右对齐,而这并不是我们希望看到的。

继续,我们来看了属性,如下图:

你以为你已经掌握了RelativeLayout_第3张图片

SDK 17后还有这个属性:layoutDirection

选择"ltr"这个值后,所有的start属性,都等同于left属性;所有end属性,都等同于right属性。

选择"rtl"这个值后,所有的start属性,都等同于right属性;所有end属性,都等同于left属性。

也就是说,你已经主动的指定了定位的方向,而不是交给系统自己适配。

你以为你已经掌握了RelativeLayout_第4张图片

"inherit"是指从父View继承对齐方式

"locale"是指根据当前的语种,选择相应对齐方式

你可能感兴趣的:(你以为你已经掌握了RelativeLayout)