studio - textview android align right
Alinear el texto a la derecha en TextView de Android (18)
Tengo un TextView
en mi aplicación. Quiero alinear el texto a la derecha. Intenté agregar:
android:gravity="right"
Pero esto no funciona para mí.
¿Qué podría estar haciendo mal?
Permítanme explicar el concepto de gravedad utilizando WEB porque muchos desarrolladores lo saben.
android_layout_gravity
comporta float:left|right|top|bottom
Mientras que android_gravity
funciona como text_align:centre|left|right
En Android, float es android_layout_gravity y text_align: es android_gravity.
Y android_layout_gravity se aplica en relación con el padre. donde como android_gravity se aplica a su contenido secundario o interno.
Nota android_gravity solo funciona cuando su Vista es match_parent (cuando tiene espacio para centrar).
A continuación funciona para mí:
<TextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sarah" />
<TextView
android:id="@+id/tv_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tv_username"
android:layout_alignParentEnd="true"
android:layout_toEndOf="@+id/tv_username"
android:text="San Marco"
android:textAlignment="viewEnd" />
Tenga en cuenta la configuración de android:layout_alignParentEnd
y android:textAlignment
del segundo TextView.
Asegúrese de que no está utilizando android:layout_width="wrap_content"
lo contrario, no podrá establecer la gravedad porque no tiene suficiente espacio para que se alinee el texto. En su lugar usa android:layout_width="fill_parent"
Creo que estás haciendo esto: android:layout_width = "wrap_content"
Si este es el caso, haz esto: android:layout_width = "match_parent"
El siguiente fragmento de código:
android:textAlignment="textEnd"
android:layout_gravity="end"
funciona muy bien para mi
En caso de que alguien todavía necesite.
android:gravity="end"
En general, android:gravity="right"
es diferente de android:layout_gravity="right"
.
El primero afecta la posición del texto en sí dentro de la Vista, por lo que si desea que esté alineado a la derecha, layout_width=
debe ser "fill_parent"
o "match_parent"
.
El segundo afecta la posición de la vista dentro de su padre, en otras palabras, alineando el objeto en sí (cuadro de edición o vista de texto) dentro de la vista padre.
En mi caso, estaba usando Relative Layout
para un emptyString
Después de luchar en esto por una hora. Solo esto me funcionó:
android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"
layout_toRightOf
o layout_toEndOf
ambos funcionan, pero para layout_toEndOf
mejor, utilicé ambos.
Para que quede más claro:
Esto era lo que estaba tratando de hacer:
Y esta fue la salida del emulador.
Diseño:
<TextView
android:id="@+id/welcome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="Welcome "
android:textSize="16sp" />
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/welcome"
android:layout_toRightOf="@id/welcome"
android:text="@string/emptyString"
android:textSize="16sp" />
Darse cuenta de:
-
android:layout_width="wrap_content"
funciona -
Gravity
no es usada
Haz el (LinearLayout) android:layout_width="match_parent"
y el android:layout_gravity="right"
Puedes usar:
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
Si está en RelativeLayout
puede usar android:layout_toRightOf="@id/<id_of_desired_item>"
O
Si desea alinearse con la esquina right
del dispositivo, coloque android:layout_alignParentRight="true"
También me enfrenté con el mismo problema y pensé que el problema estaba ocurriendo a medida que el ancho_diseño de TextView estaba teniendo wrap_content. Necesitas tener layout_width como match_parent y android: gravity = "gravity"
esto debería servir al propósito
android:textAlignment="textStart"
intenta agregar android:gravity="center"
en TextView
android:layout_gravity
se usa para alinear la vista de texto con respecto al diseño principal. android:gravity
se utiliza para alinear el texto dentro de la vista de texto.
¿Está seguro de que está tratando de alinear el texto dentro de la vista de texto a la derecha o desea mover la vista de texto a la derecha con respecto al diseño principal o está tratando de lograr ambas cosas?
La mejor solución es la que es la más simple y la que menos modifica el comportamiento de su código .
¿Qué TextView
si puede resolver este problema solo con 2 propiedades en su TextView
?
¿En lugar de tener que cambiar las propiedades de LinearLayout
que pueden alterar el comportamiento de los niños de LinearLayout
?
Usando esta forma, no necesita cambiar LinearLayout
propiedades y el comportamiento de LinearLayout
, solo necesita agregar las siguientes propiedades a su TextView
destino:
android:gravity="right"
android:textAlignment="gravity"
¿Qué sería mejor cambiar solo tu objetivo para resolver tu solución en lugar de tener la oportunidad de causar otro problema en el futuro, modificando a tu padre objetivo? Piénsalo :)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/tct_postpone_hour"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:gravity="center_vertical|center_horizontal"
android:text="1"
android:textSize="24dp" />
</RelativeLayout>
hace alinear el número uno en el centro tanto horizontal como vertical.
android:gravity="right"
Básicamente, se utiliza en el diseño lineal, por lo que debe configurar el ancho de TextView o EditText como
android:layout_width = "match_parent"
y
Cuando esté trabajando en Diseño relativo, use
android:layout_alignParentRight="true"