2

我对以下属性的使用有点困惑。

> 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"

以下是我提到的一些事实。如果我错了,请纠正我。

  • 要同时支持 Ltr 和 Rtl 布局并支持 api 级别 17 之前的版本,建议将上述属性始终成对放置。

  • “开始”和“结束”概念是在 API 级别 17 中添加的,
    对于 API 级别>=17 的 Ltr 设备将优先,而对于 API 级别<17 的 Ltr 设备,“右”和“左”概念将优先

  • 如果我们的应用 minskdversion >=17,那么我们可以忽略“right”和
    “left”属性,只使用“start”和“end”属性

  • “开始”和“结束”概念将在所有 Rtl 设备中优先

另外,我想知道如果我成对添加上述属性,在性能/优化方面是否有任何不利影响,例如-

 <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"
     />
4

1 回答 1

5

要在您的应用程序中支持 RTL,您应该:

  • 如果您的应用 API 级别 >=17,您应该使用“start”和“end”而不是“left”和“right”(例如:layout_marginStart)
  • 如果您的应用 API 级别 <17,那么您应该在“left”和“right”之外添加“start”和 end”。换句话说 - 使用 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" />
    

    注意:android:layout_marginStart="16dp"

来源

于 2017-05-06T23:01:56.473 回答