¿Cómo alinear el botón a la derecha, sin ser superpuesto por TextView?

Estoy tratando de obtener algo como esto: http://img202.imageshack.us/img202/552/layoutoy.png . Estoy utilizando esto como un elemento de lista (técnicamente como la vista de grupo de un ExpandableListView).

Aquí está el archivo 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> 

Pero esto no funciona. El botón no envuelve su contenido, sino que utiliza todo el espacio horizontal disponible. El TextView no envuelve su contenido, pero lo que quiero hacer es cortar cuando se superpone el botón.

En otras palabras, quiero que todos los botones sean del mismo ancho, independientemente de la cantidad de texto en las vistas de texto. ¿Es esto posible?

Creo que deberías intentarlo al revés. Haga que el TextView esté a la izquierda del botón. De esta manera, la vista de texto no se superpondrá al botón. Si desea que se corte de al final de la línea que tiene que restringir a una línea. En este momento sólo movería el resto del texto a la siguiente línea.

Esto debería funcionar:

 <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> 

Antes de que alguien intente el método mostrado arriba (con el RelativeLayout), debe utilizar LinearLayout para esto. Los pesos deben estar ajustados correctamente: el elemento que necesita ocupar el espacio vacío debe tener un peso de 1 y el ancho definido como fill_parent, el elemento que necesita mantener su tamaño mínimo debe tener un peso de 0 con un ancho de resumir contenido.

 <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> 
  • Uso de atributos desde el nivel API más allá de minSdkVersion
  • XmlPullParserException esperado end_tag
  • Placeholder Fragmento / Actividad principal android.view.InflateException
  • Cambiando el color de fondo del menú desplegable de la acción
  • Tiene algunos problemas con el archivo xml. Androide. Eclipse. Error: Invalid start tag PreferenceScreen
  • ¿Cómo ocultar por programación algunos elementos de la vista, pero no todos, en una salida XML?
  • Android xml dibujable imagen en pantalla completa de fondo
  • Android: ¿Cómo declarar el espacio de nombres XML en styles.xml?
  • Cómo solucionar el error: No se pudo encontrar el método onClick (View) en un padre o ancestro Contexto para android: onClick
  • Cómo generar simple-xml java objeto anotado desde el esquema xsd
  • Mostrar contenido en la barra de herramientas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.