RelativeLayout 中的两个 TextViews 正确响应 rtl locale

Two TextViews inside RelativeLayout with proper respond to rtl locale

如何在 RelativeLayout 中创建 2 TextViewsLTRRTL 语言环境中看起来像这样。

(Table只是为了澄清我的意思,这不是我的问题的一部分)

LTR

╔════════════╦═══════════════════════════════════════════════════════════╗
║  txtView1  ║                        txtView2                           ║
╚════════════╩═══════════════════════════════════════════════════════════╝

RTL

╔═════════════════════════════════════════════════════════════╦══════════╗
║                           txtView2                          ║ txtView1 ║
╚═════════════════════════════════════════════════════════════╩══════════╝

目前我正在使用边距,但这似乎不对:

<RelativeLayout
    android:id="@+id/title_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/txtView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView 1"
        android:textColor="?attr/info_color"
        android:textSize="13sp" />

    <TextView
        android:id="@+id/txtView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/txtView1"
        android:text="TextView 2"
        android:layout_marginLeft="60dp"
        android:layout_marginRight="60dp" />

</RelativeLayout>

我无法使用setLayoutDirectionminSdkVersion低于17

我不确定这是否是您想要的,但您可以:

1 - 在 TextView1.

中将 android:layout_width 设置为 wrap_content

2 - 将 TextView1 对齐到父级的开始

3 - 对齐 TextView1

末尾的 TextView2
<RelativeLayout
    android:id="@+id/title_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/txtView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:text="TextView 1"
        android:textSize="13sp" />

    <TextView
        android:id="@+id/txtView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_alignBaseline="@id/txtView1"
        android:layout_toEndOf="@id/txtView1"
        android:text="TextView 2"/>
</RelativeLayout>

这是结果:

LTR

RTL

编辑

如评论中所述,您可以使用 LinearLayout:

<LinearLayout
    android:id="@+id/title_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="1">

    <TextView
        android:id="@+id/txtView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="TextView 1"
        android:textSize="13sp"
        android:layout_weight="0.2"/>

    <TextView
        android:id="@+id/txtView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_weight="0.8"
        android:layout_alignBaseline="@id/txtView1"
        android:text="TextView 2"/>
</LinearLayout>

以下代码似乎对我来说工作正常。

<LinearLayout
        android:layoutDirection="locale"
        android:textDirection="locale" //Works as expected when I set rtl or ltr
        android:layout_width="match_parent" 
        android:layout_height="match_parent">
    <TextView
            android:text="Something"
            android:layout_weight="2"
            android:textDirection="inherit"
            android:layout_width="0dp"
            android:layout_height="wrap_content"/>
    <TextView
            android:text="or the other"
            android:layout_weight="8"
            android:textDirection="inherit"
            android:layout_width="0dp"
            android:layout_height="wrap_content"/>
</LinearLayout>