2010-01-22 30 views
11

Tengo un LinearLayout simple con un TextView y un ImageView. Quiero que el texto en el TextView se alinee a la derecha, pero el resultado muestra que el texto estaba alineado a la izquierda. ¿Hay algún problema con mi diseño xml? Gracias.android: layout_gravity no funciona como se esperaba

<?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="wrap_content" android:background="#E8E3E4"> 
    <LinearLayout android:orientation="horizontal" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     > 
     <TextView android:layout_width="260dp" android:layout_height="wrap_content" 
      android:text="More Comments" android:textStyle="bold" android:background="#ff0000" 
      android:textColor="#121222" android:layout_gravity="right" /> 
     <ImageView android:layout_width="50dp" 
      android:layout_height="wrap_content" android:src="@drawable/arrow_right" 
      android:layout_gravity="center" android:scaleType="centerInside" /> 
    </LinearLayout> 
</LinearLayout> 

Gracias, Michael. Pero la solución que mencionaste tampoco funciona.

He intentado utilizar RelativeLayout, pero aún así me dio como resultado: más comentarios (icono)

Lo que esperaba es más Comentarios (icono)

el XML RelativeLayout está por debajo. ¿Hay algo malo con eso?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent"> 
    <TextView android:id="@+id/label" android:layout_width="260dp" 
     android:layout_height="wrap_content" android:text="More Comments" 
     android:textStyle="bold" android:background="#ff0000" 
     android:textColor="#121222" android:layout_gravity="right" /> 
    <ImageView android:layout_width="50dp" android:layout_height="wrap_content" 
     android:src="@drawable/arrow_right" android:layout_gravity="center" 
     android:scaleType="centerInside" android:layout_toRightOf="@id/label" /> 
</RelativeLayout> 

Después de la solución en el comentario de Michael, tengo el XML siguiente. Yo esperaba que la salida sea:

 RightLeft 

pero la salida real es:

Right    Left 

Así que la solución no funciona para mí. ¿Alguna idea?

<LinearLayout android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 
      <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right" 
        android:layout_weight="1.0"      
        android:text="RIGHT"/> 
      <TextView 
        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 
        android:layout_gravity="left" 
        android:text="LEFT"/> 
    </LinearLayout> 

+0

¿Puede incluir su xml? – jball

+0

Lo hizo, simplemente no lo formateó. –

+0

(también: editado para que sea visible, y visible * como código * ...) –

Respuesta

7

Me di cuenta de lo que está mal con mi xml. Debería haber usado la gravedad en lugar de layout_gravity para alinear a la derecha el texto en TextView. El siguiente XML funciona como se esperaba.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent"> 
    <TextView android:id="@+id/label" android:layout_width="260dp" 
     android:layout_height="wrap_content" android:text="More Comments" 
     android:textStyle="bold" android:background="#ff0000" 
     android:textColor="#121222" android:gravity="right" /> 
    <ImageView android:layout_width="50dp" android:layout_height="wrap_content" 
     android:src="@drawable/arrow_right" android:layout_gravity="center" 
     android:scaleType="centerInside" android:layout_toRightOf="@id/label" /> 
</RelativeLayout> 
+0

Luego debe marcar esta respuesta como 'aceptada' (haga clic en la marca de verificación a la izquierda de la pregunta). –

1

que he hecho sólo unos pocos proyectos con Android, pero Android: layout_gravity especifica la alineación para la vista dentro de la matriz, androide: la gravedad especifica la alineación de la Vistas contenidas dentro de la Vista cuya gravedad está especificando. Asegúrate de tener la adecuada especificada. La documentación no distingue entre estos dos.

Sería más fácil ayudarte si publicaste un ejemplo de XML.

EDIT:

Veo que ha publicado el código XML ahora. Parece que tiene el conjunto de atributos adecuado, pero si está alineando el texto a la derecha, ¿por qué lo pondría primero en el diseño lineal? Sugiero cambiarlo para ir de izquierda a derecha.

33

LinearLos saltos con orientación horizontal no admiten la gravedad derecha/izquierda. Puede encontrar una solución provisional here.

+0

+1, había pasado algún tiempo tratando de encontrar esta información antes de ver esta respuesta. –

0

Aquí hay un código que escribí para mi proyecto. Cumple lo que estás buscando. Simplemente cambiaría los tipos de control y tal y debería estar apagado y funcionando.

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="50dip" 
    android:background="#ffdddddd"> 
    <TextView android:layout_width="260dp" 
     android:layout_height="wrap_content" 
     android:text="More Comments" 
     android:textStyle="bold" 
     android:background="#ff0000" 
     android:textColor="#121222" 
     android:layout_centerHorizontal="true" 
     android:layout_alignParentTop="true" /> 
    <ImageView android:layout_width="50dp" 
     android:layout_height="wrap_content" 
     android:src="@drawable/arrow_right" 
     android:scaleType="centerInside" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" /> 
</RelativeLayout> 
+0

Hola, Jared, probé tu código reemplazando ToogleButton con TextView. No funcionó: el texto en el TextView no estaba alineado a la derecha. – user256239

+0

Esto debería funcionar solo copiarlo. – Jared

Cuestiones relacionadas