2012-01-23 24 views

Respuesta

158

pienso que usted está haciendo esto: android:layout_width = "wrap_content"
Si este es el caso, haga lo siguiente: android:layout_width = "match_parent"

+1

'android: layout_width =" match_parent "' también correcto – Bishan

+2

@Bishan fill llenará el resto del espacio, la coincidencia lo establecerá igual al ancho del elemento primario –

+11

En realidad, fill_parent y match_parent son lo mismo. El nombre se cambió a match_parent porque aparentemente fill_parent confundía a las personas. –

7

Asegúrese de que no está utilizando android:layout_width="wrap_content" si es así, entonces no podrá establecer la gravedad porque no tiene suficiente espacio para alinear el texto. En su lugar utilizar android:layout_width="fill_parent"

17

android:layout_gravity se utiliza para alinear la vista de texto con respecto a la disposición de los padres. android:gravity se usa para alinear el texto dentro de la vista de texto.

¿Seguro que está tratando de alinear el texto dentro de la vista de texto a la derecha o hacer que desea mover la vista de texto en sí a la derecha con respecto a la disposición de los padres o estás tratando de acheive tanto

+0

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

131

En general, android:gravity="right" es diferente de android:layout_gravity="right".

El primero afecta la posición del texto en sí mismo 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 elemento primario, en otras palabras, alinear el objeto mismo (cuadro de edición o vista de texto) dentro de la vista principal.

4

Si es en RelativeLayout puede utilizar android:layout_toRightOf="@id/<id_of_desired_item>"

O

Si desea alinear a la esquina right del dispositivo el lugar android:layout_alignParentRight="true"

4

Hacer que el (LinearLayout) android:layout_width="match_parent" y el TextView android:layout_gravity="right"

65

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

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

En lugar de tener que cambiar su LinearLayout Propiedades que pueden alterar el comportamiento de LinearLayout childs?

El uso de este modo, no es necesario cambiar LinearLayout propiedades y el comportamiento, sólo tiene que añadir las dos siguientes propiedades a su objetivo TextView:

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

Lo que sería mejor cambiar sólo a su objetivo para resolver su solución en lugar de tener la posibilidad de causar otro problema en el futuro, modificando a su padre objetivo? pensar en ello :)

+0

Me sale un error al decir que no se ha encontrado ningún identificador de recurso para el recurso 'textAlignment' en el paquete de Android. – anu

+0

¿Está seguro de que está accediendo a las propiedades 'TextView'? - Puede verificar la propiedad desde la referencia aquí: http://developer.android.com/reference/android/view/View.html#attr_android:textAlignment –

+3

textAlignment se agregó en API nivel 17 (Android 4.2). Su emulador/dispositivo deberá estar ejecutando 4.2+ para que esto funcione. – thanhtd

2

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 las android:layout_alignParentEnd y android:textAlignment configuración de la segunda TextView.

3

Voy a explicar el concepto de gravedad, utilizando WEB debido a que una gran cantidad de desarrolladores son conscientes de ello.

android_layout_gravity comporta float:left|right|top|bottom

Mientras android_gravity trabajo como text_align:centre|left|right

En flotador Android es android_layout_gravity y text_align: es android_gravity.

Y android_layout_gravity se aplica en relación con el elemento primario. 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).

0

También me enfrenté al mismo problema y pensé que el problema estaba sucediendo ya que el layout_width de TextView tenía wrap_content.Es necesario tener layout_width como match_parent y el androide: gravedad = "gravedad"

5
android:gravity="right" 

Se utiliza básicamente en la Disposición lineal por lo que tenga que configurar el ancho de Vista de Texto o bien EditarTexto como

android:layout_width = "match_parent" 

y

Cuando se trabaja en la disposición relativa, utilice

android:layout_alignParentRight="true" 
1

Se puede utilizar:

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

esto debe servir al propósito

android:textAlignment="textStart"

1

El siguiente fragmento de código:

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

funciona muy bien para mí

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

2

En caso de que alguien todavía necesita

android:gravity="end" 
0

En mi caso, yo estaba usando Relative Layout para un emptyString

Después de luchar en esto durante una hora. Sólo esto funcionó para mí:

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

layout_toRightOf o layout_toEndOf ambas obras, sino para apoyar mejor, que utiliza ambos.

Para hacer más claro:

Esto era lo que estaba tratando de hacer:

enter image description here

Y esta era la salida

enter image description here

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

en cuenta que:

  1. android:layout_width="wrap_content" obras
  2. Gravity no se utiliza
Cuestiones relacionadas