Выравнивание TextView и ImageView внутри LinearLayout

У меня есть ListView с пользовательским адаптером и макет для элементов в этом списке. Макет для элементов – это просто TextView с ImageView. Изображение должно быть выровнено в правой части экрана. Однако позиция изображения немного меняется, в зависимости от длины текста в TextView. Вот как это выглядит:

Скриншот

Это мой 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> 

Как заставить изображение всегда выравниваться вправо, не подталкивая его?

RelativeLayout должен решить вашу проблему с помощью android:layout_alignParentRight и android: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"/> 

Я думаю, вы пытаетесь использовать RelativeLayout и использовать выравнивание родительского права на изображении и выровнять родительский слева в TextView.