Alineación de vistas de texto en los bordes izquierdo y derecho del diseño de Android
Estoy empezando con Android. Tengo problemas para obtener un diseño sencillo.
Me gustaría usar un LinearLayout
para posicionar dos TextViews
en una sola fila. Un TextView
en el lado izquierdo, el otro en el lado derecho (análogo a float: left, float: right in CSS).
¿Es eso posible, o necesito utilizar un diverso ViewGroup
o un ViewGroup
adicional del diseño para lograrlo?
Esto es lo que tengo hasta ahora:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:padding="10sp"> <TextView android:id="@+id/mytextview1" android:layout_height="wrap_content" android:text="somestringontheleftSomestring" android:layout_width="wrap_content"/> <TextView android:id="@+id/mytextview2" android:layout_height="wrap_content" android:ellipsize="end" android:text="somestringontheright" android:layout_width="wrap_content"/> </LinearLayout>
Utilice un RelativeLayout
con layout_alignParentLeft
y layout_alignParentRight
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:id="@+id/mytextview1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:id="@+id/mytextview2"/> </RelativeLayout>
Además, probablemente debería estar usando dip
(o dp
) en lugar de sp
en su diseño . sp
reflejan los ajustes de texto, así como la densidad de la pantalla, por lo que usualmente sólo se usan para clasificar los elementos de texto.
Puede utilizar la propiedad de gravedad para "flotar" vistas.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical|center_horizontal" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left" android:layout_weight="1" android:text="Left Aligned" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right" android:layout_weight="1" android:text="Right Aligned" /> </LinearLayout> </LinearLayout>
Incluso con el consejo de Rollin, la respuesta de Dave Webb no funcionó para mí. El texto en el TextView
derecho TextView
estaba sobreponiendo el texto en el TextView
izquierdo.
Finalmente conseguí el comportamiento que quería con algo como esto:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout01" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp"> <TextView android:id="@+id/mytextview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" /> <TextView android:id="@+id/mytextview2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_toRightOf="@id/mytextview1" android:gravity="right"/> </RelativeLayout>
Tenga en cuenta que mytextview2 tiene "android:layout_width"
establecido como "match_parent"
.
Espero que esto ayude a alguien!
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Hello world" /> <View android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Gud bye" />