Как выровнять кнопку справа, не перекрывая TextView?

Я пытаюсь получить что-то вроде этого: http://img202.imageshack.us/img202/552/layoutoy.png . Я использую это как элемент списка (технически в качестве группового представления ExpandableListView).

Вот файл XML:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight"> <TextView android:id="@+id/list_item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" /> <Button android:id="@+id/list_item_button" android:text="Click me!" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_toRightOf="@id/list_item_text" /> </RelativeLayout> 

Но это не работает. Кнопка не обертывает содержимое, а использует все доступные горизонтальные пространства. TextView обертывает его содержимое, но я хочу, чтобы оно было отключено, когда оно перекрывает кнопку.

Другими словами, я хочу, чтобы все кнопки имели одинаковую ширину, независимо от количества текста в текстовых изображениях. Это вообще возможно?

Я думаю, вы должны попробовать это наоборот. Сделайте TextView слева от кнопки. Таким образом, Textview не будет перекрывать кнопку. Если вы хотите, чтобы он был разрезан в конце строки, вы должны ограничить его одной строкой. На данный момент это просто переместит остальную часть текста на следующую строку.

Это должно сделать трюк:

 <Button android:id="@+id/list_item_button" android:text="Click me!" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true"/> <TextView android:id="@+id/list_item_text" android:text="veryveryveryveryveryveryveryveryveryverylong" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/list_item_button" android:ellipsize="end" /> </RelativeLayout> 

Прежде чем кто-либо попробует метод, показанный выше (с RelativeLayout), для этого вам следует использовать LinearLayout. Весы должны быть установлены правильно: элемент, который должен занимать пустое пространство, должен иметь вес 1 и ширину, заданный как fill_parent, элемент, который должен поддерживать минимальный размер, должен иметь вес 0 с шириной обернуть содержимое.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight"> <TextView android:id="@+id/list_item_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight=1 android:ellipsize="end" /> <Button android:id="@+id/list_item_button" android:text="Click me!" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight=0/> </LinearLayout>