相对布局alignParentLeft vs alignParentStart

And*_*w S 15 android android-relativelayout

所以我对使用相对布局很满意,但是在习惯Android Studio时我注意到在我的相对布局子视图中它生成了以下两种情况.

android:layout_alignParentLeft="true"
android:layout_alignParentStart="true
Run Code Online (Sandbox Code Playgroud)

在这里检查了Android文档,但看不出两者之间的区别.当然在Android Studio中相互交换显示没有明显的区别.有吗?

sam*_*gak 13

这取决于布局方向.布局方向可以是从左到右(start = left,end = right),也可以是从右到左(反之亦然).

默认情况下,布局方向基于区域设置(对于像阿拉伯语这样的语言,从左到右依次为英语,从右到左),但您可以使用layoutDirection XML属性或setLayoutDirection函数覆盖它.例如:

android:layoutDirection="ltr"   
Run Code Online (Sandbox Code Playgroud)

^将使alignParentStart等效于所有设备上的alignParentLeft.

android:layoutDirection="rtl"   
Run Code Online (Sandbox Code Playgroud)

^将使alignParentStart等效于所有设备上的alignParentRight.您还可以设置"locale"以使用区域设置或"继承"从父视图继承布局方向.

您需要添加android:supportsRtl="true"到AndroidManifest.xml以支持从右到左的布局.

还有关:android:textDirection


Rav*_*yal 5

android:layout_alignParentStart="true"
Run Code Online (Sandbox Code Playgroud)

对齐开始的边缘这一观点的开始其父的边缘.这是LTR(从左到右)语言环境的边缘,右边是RTL(从右到左)语言环境语言,如阿拉伯语,希伯来语,波斯语等.

Android Studio也增加了原因

android:layout_alignParentLeft="true"
Run Code Online (Sandbox Code Playgroud)

您的观点是支持4.2.x之前的旧平台Jelly Bean.类似的Start/End属性 layout_alignParentStart仅可从API 17开始提供.只有在找不到相应的" 开始/结束"属性时,较新的平台才会回退到" 左/右"属性.

如果您的应用程序支持使用android:minSdkVersion以下级别的旧版平台17,则必须始终为视图提供" 左/右"属性.否则项目将无法编译,并显示错误消息

要支持比API 17更旧的版本(项目指定7),您还应该添加android:layout_alignParentLeft ="true"

另请注意,您的Android应用程序需要声明其对您的RTL语言环境的支持AndroidManifest.xml.

<application
    ...
    android:supportsRtl="true"
/>
Run Code Online (Sandbox Code Playgroud)