Alinear a la derecha el texto en Android TextView


215

Tengo un TextViewen mi solicitud. Quiero alinear el texto a la derecha. Intenté agregar:

android:gravity="right"

Pero esto no funciona para mí.

¿Qué podría estar haciendo mal?

Respuestas:


193

Creo que estás haciendo esto: android:layout_width = "wrap_content"
si este es el caso, haz esto:android:layout_width = "match_parent"


2
@Bishan fill llenará el resto del espacio, la coincidencia lo establecerá igual al ancho del padre
Troy Cosentino

11
En realidad, fill_parent y match_parent son lo mismo. El nombre se cambió a match_parent porque aparentemente fill_parent estaba confundiendo a las personas.
Edward Falk

158

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, entonces 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 mismo (cuadro de edición o vista de texto) dentro de la vista padre.


83

La mejor solución es la más simple y la que modifica menos el comportamiento de su código .

¿Qué pasa si puede resolver este problema solo con 2 Propiedades en su TextView?

¿En lugar de necesitar cambiar sus LinearLayoutpropiedades que quizás puedan alterar el comportamiento de los LinearLayoutniños?

De esta manera, no necesita cambiar las LinearLayoutpropiedades y el comportamiento, solo necesita agregar las dos propiedades siguientes a su destino TextView:

android:gravity="right"
android:textAlignment="gravity"

¿Qué sería mejor cambiar solo su objetivo para resolver su solución en lugar de tener la oportunidad de causar otro problema en el futuro, modificando a su padre objetivo? Piénsalo :)


Recibo un error que dice que no se encontró un identificador de recurso para el recurso 'textAlignment' en el paquete de Android.
Anu

¿Está seguro de que está accediendo a una TextViewpropiedad? - Puede consultar la propiedad desde la referencia aquí: developer.android.com/reference/android/view/…
Paulo Roberto Rosa

44
textAlignment se agregó en el nivel 17 de la API (Android 4.2). Su emulador / dispositivo deberá ejecutar 4.2+ para que esto funcione.
thanhtd

Intenté usar esta propiedad textAlignment en Android 4.1.2 y obtuve el error "No se encontró un identificador de recurso para el atributo 'textAlignment'". Encontré la respuesta para este error aquí stackoverflow.com/a/20176191/723507 . ¿Cómo podrías usarlo en 4.0.3?
thanhtd

20

android:layout_gravityse usa para alinear la vista de texto con respecto al diseño principal. android:gravityse usa 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 en sí a la derecha con respecto al diseño principal o está tratando de lograr ambos?


Estoy tratando de alinear el texto dentro de la vista de texto a la derecha
Bishan

11

El siguiente fragmento de código:

android:textAlignment="textEnd"
android:layout_gravity="end"

funciona muy bien para mi


11

En caso de que alguien todavía necesite

android:gravity="end"

¿para qué es eso?
Gumuruh

En LTR, esto alinea el texto a la derecha y en RTL, a la izquierda
npk

8

Asegúrate de no estar usando android:layout_width="wrap_content"si es así, entonces no podrás establecer la gravedad porque no tienes suficiente espacio para que el texto se alinee. En lugar de usarandroid:layout_width="fill_parent"


7
android:gravity="right"

Básicamente se usa en diseño lineal, por lo que debe establecer su ancho de TextView o EditText como

android:layout_width = "match_parent"

y

Cuando trabaje en Diseño relativo, use

android:layout_alignParentRight="true"

5

Realice el (LinearLayout) android:layout_width="match_parent"y el TextView'sandroid:layout_gravity="right"


5

Si está adentro RelativeLayoutpuedes usarandroid:layout_toRightOf="@id/<id_of_desired_item>"

O

Si desea alinear a la rightesquina del dispositivo, el lugarandroid:layout_alignParentRight="true"


4

Permítanme explicar el concepto de gravedad usando WEB porque muchos desarrolladores lo saben.

android_layout_gravity se comporta float:left|right|top|bottom

Mientras que android_gravitytrabajar comotext_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.

Tenga en cuenta que android_gravity solo funciona cuando su vista es match_parent (cuando tiene espacio para centrar).


3

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 android:layout_alignParentEndy android:textAlignmentde la segunda TextView.


2

Puedes usar:

    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"


2

En mi caso, estaba usando Relative Layoutpara unemptyString

Después de luchar por esto durante una hora. Solo esto funcionó para mí:

android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"

layout_toRightOfo layout_toEndOfambos funcionan, pero para soportarlo mejor, utilicé ambos.

Para que quede más claro:

Esto era lo que estaba tratando de hacer:

ingrese la descripción de la imagen aquí

Y esta fue la salida del emulador

ingrese la descripción de la imagen aquí

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:

  1. android:layout_width="wrap_content" trabajos
  2. Gravity no se usa

1

También enfrenté el mismo problema y pensé que el problema estaba ocurriendo ya que el diseño_ancho de TextView tenía wrap_content. Debes tener layout_width como match_parent y android: gravity = "gravity"


1
<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 que el número uno se alinee en el centro, tanto horizontal como vertical.



0

He usado el atributo "layout_alignRight" en mi caso, en el texto es:

android:layout_alignRight="@+id/myComponentId"

Si desea agregar un margen derecho, simplemente establezca el atributo "Layout_Margin Right" en "20dp" por ejemplo, en el texto es:

android:layout_marginRight="20dp"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.