And*_*per 2 layout android android-layout android-view android-api-levels
我对以下属性的使用有点困惑。
> android:layout_marginRight and android:layout_marginEnd
> android:layout_marginLeft and android:layout_marginStart
> android:layout_toLeftOf and android:layout_toStartOf
> android:layout_toRightOf and android:layout_toEndOf
> android:layout_gravity="right|end"
> android:layout_gravity="left|start"
Run Code Online (Sandbox Code Playgroud)
以下是我提到的一些事实。如果我错了,请纠正我。
为了支持 Ltr 和 Rtl 布局并支持 api 级别 17 之前的版本,建议将上述属性始终成对放置。
“开始”和“结束”概念是在 API 级别 17 中添加的,将
优先用于 api 级别>=17 的 Ltr 设备,“右”和“左”概念将优先用于 api 级别 <17 的 Ltr 设备
如果我们的应用程序 minskdversion >=17 那么我们可以忽略“right”和
“left”属性而只使用“start”和“end”属性
另外,我想知道如果我成对添加上述属性,对性能/优化是否有任何不利影响,例如-
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|end"
android:layout_marginRight="@dimen/dp10"
android:layout_marginEnd="@dimen/dp10"
android:layout_marginLeft="@dimen/dp10"
android:layout_marginStart="@dimen/dp10"
android:layout_toLeftOf="@+id/bar"
android:layout_toStartOf="@+id/bar"
/>
Run Code Online (Sandbox Code Playgroud)
要在您的应用中支持 RTL,您应该:
如果您的应用程序 API 级别 <17,那么除了“左”和“右”之外,您还应该添加“开始”和“结束”。换句话说 - 同时使用 layout_marginRight 和 layout_marginEnd 换句话说,你的任何视图都应该是这样的:android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="20dp"
android:text="@string/text_Field"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
Run Code Online (Sandbox Code Playgroud)
注意:android:layout_marginStart="16dp"