我试图使用此代码将三个项目放在水平对齐
<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,但物品相互碰撞。
注意:所有语言都应该从右到左开始,这是我想要的行为
答案 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; 对于从应用程序右侧开始的支持语言。