在LinearLayout中对齐TextView和ImageView

3
我有一个带有自定义适配器和列表项目布局的ListView。该项目的布局只包含一个带有ImageView的TextView。图像应该对齐到屏幕的右侧。然而,根据TextView中文本的长度,图像的位置会稍微偏移。如下图所示: screenshot 这是我的XML代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:gravity="center_vertical" >

    <TextView
        android:id="@+id/txtCategoryName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="10"
        android:singleLine="true"
        android:ellipsize="end"
        android:gravity="center_vertical"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:textColor="@color/list_text_color"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ImageView
        android:id="@+id/imgArrowRight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/right_arrow_44"
        android:contentDescription="@string/img_description_right_arrow"
        android:layout_gravity="right" />

</LinearLayout>

如何使图片始终靠右对齐而不被挤压?

2个回答

9

RelativeLayout可以使用android:layout_alignParentRightandroid:layout_alignParentLeft很好地解决您的问题。类似这样:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<TextView
    android:id="@+id/txtCategoryName"
    android:layout_alignParentLeft="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:ellipsize="end"
    android:gravity="center_vertical"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:textColor="@color/list_text_color"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<ImageView
    android:id="@+id/imgArrowRight"
    android:layout_alignParentRight="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/right_arrow_44"
    android:contentDescription="@string/img_description_right_arrow"/>

这是一个不错的解决方案,但你必须确保 TextView 中的文本永远不会超过屏幕大小,否则它将出现在 ImageView 内容上方。也许 android:layout_toLeftOf="+@+id/imgArrowRight" 可以解决问题。 - yugidroid
如何以编程方式实现这个? - Mico

1

我认为你尝试使用RelativeLayout,并在图像上使用align parent right,在TextView上使用align parent left。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接