将布局项右对齐,并在Android上对齐RTL

时间:2017-11-25 05:44:42

标签: android android-linearlayout android-relativelayout

我试图使用此代码将三个项目放在水平对齐

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:layout_gravity="right"
            android:layout_marginTop="10dp"
            android:orientation="horizontal">
            <ImageView
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_marginLeft="10dp"
                android:src="@drawable/address"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:text="@string/lbl_address"/>
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:id="@+id/txtAddress" />
        </LinearLayout>

问题是重力从未起作用,ImageView总是从左侧开始,其他项目按照相同的顺序。

我试图在代码中反转项目订单,这些订单不适用于任何RTL语言,但我的应用程序都针对两者,因此它在RTL支持的设备上显示错误。

我也尝试过RelativeLayout,但物品相互碰撞。

注意:所有语言都应该从右到左开始,这是我想要的行为

3 个答案:

答案 0 :(得分:1)

将此属性添加到根LinearLayout标记:

android:layoutDirection="rtl"

这将使您的观点布局,就好像用户选择了从右到左的语言,无论他们实际选择的语言是什么。

答案 1 :(得分:0)

因为您在代码中使用了android:layout_width="0dp" android:layout_weight="1"TextView将使用余下的空格。因此,左侧图片将位于左侧。因此,您可以删除{{1} }并更改android:layout_weight="1"的宽度。

您可以更改

TextView

<TextView
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:id="@+id/txtAddress" />

注意

  • 如果您想更改<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:id="@+id/txtAddress" /> 项目的位置。您可以使用LinearLayout

  • 如果您想更改android:gravity="right"的位置,可以使用LinearLayout

您的代码为android:layout_gravity="right",因此android:layout_width="match_parent"无效。

您可以在android:layout_gravity="right"

中使用android:layoutDirection="rtl"
LinearLayout

答案 2 :(得分:0)

尝试在 AndroidManifest.xml 中使用此代码         机器人:supportsRtl =&#34;真&#34; 对于从应用程序右侧开始的支持语言。