布局 - 开始 - 结束,左 - 右概念

时间:2016-12-04 08:12:51

标签: android android-layout 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"

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

  • 支持Ltr和Rtl布局,并支持api level 17之前的版本 是否建议将上述属性成对出现..

  • 在API级别17中添加了“开始”和“结束”概念,并且将是 对于具有api级别&gt; = 17和“右”和“左”的Ltr设备优先 对于api级别<17

  • 的Ltr设备,概念优先
  • 如果我们的应用minskdversion是&gt; = 17那么我们可以忽略“正确”和
    “left”属性并仅使用“start”和“end”属性

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  • 如果您的应用API级别&gt; = 17,则应使用“开始”和“结束”而不是“左”和“右”(例如:layout_marginStart)
  • 如果您的应用API级别<17,那么您应该添加“开始”并结束“除了”左侧“和”右侧“。换句话说 - 使用layout_marginRight和layout_marginEnd 换句话说,您的任何视图应如下所示: 机器人: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”

Source