2009-09-30 25 views

Respuesta

27

Se puede aplicar un centrado a cualquier punto de vista, incluyendo un diseño, utilizando el atributo XML androide:. Layout_gravity". Es posible que desee darle el valor 'centro'

puede encontrar una referencia de una posible los valores para esta opción aquí: http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html#attr_android:layout_gravity

+2

AFAIK, layout_gravity es sólo para LinearLayout, no para los diseños arbitrarios. – CommonsWare

+0

Como mencionaste layout_gravity es solo para LinearLayout, qué acerca de RelativeLayout porque en la aplicación quiero incrustar textview en ImageView – Vicky

+0

, lo intenté también con relativelayout y en mi opinión funciona – ludwigm

131

Paso # 1: Wrap lo que sea que desee centrada en la pantalla en una pantalla completa RelativeLayout

Paso # 2:. Dar ese punto de vista del niño (el uno, el cual quieres centrado dentro del RelativeLayout) el android:layout_centerInParent="true" atributo.

+19

Esto solo funcionó para mí cuando puse el atributo android: layout_centerInParent = "true" en la Vista dentro de RelativeLayout. –

+1

¿Qué pasa si quiero ubicarlo en el centro, pero moverlo hacia abajo si existe el peligro de superposición con otra vista? –

+3

Debe poner 'android: layout_centerInParent =" true "' en la vista secundaria, no en 'RelativeLayout'. Los atributos 'android: layout_ *' afectan cómo se posiciona y se dimensiona una vista dentro de su elemento principal, no cómo se posicionan y dimensionan los elementos secundarios de una vista dentro de ella. – Karu

17
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center"> 
    <ProgressBar 
     android:id="@+id/ProgressBar01" 
     android:layout_centerInParent="true" 
     android:layout_width="wrap_content" 
     android:layout_gravity="center" 
     android:layout_height="wrap_content"></ProgressBar> 
    <TextView 
     android:layout_below="@id/ProgressBar01" 
     android:text="@string/please_wait_authenticating" 
     android:id="@+id/txtText" 
     android:paddingTop="30px" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"></TextView> 
</RelativeLayout> 
6

Si desea centrar una vista, utilice esta. En este caso, TextView debe ser la vista más baja en su XML porque layout_height es match_parent.

<TextView 
    android:id="@+id/tv_to_be_centered" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:gravity="center" 
    android:text="Some text" 
/> 
+0

Se refería a colocar el diseño en el centro, no poner vista. –

+1

@IgorG. posicionar un diseño y una vista son lo mismo porque un Diseño * es una * Vista. – FoamyGuy

+0

@Tim Pensé que un diseño se parece más a un ViewGroup que a un Vista ... –

14

I fue capaz de centrar una vista usando

android:layout_centerHorizontal="true" 

y

android:layout_centerVertical="true" 

params.

+2

Tenga en cuenta que esos atributos solo funcionan si la vista en cuestión está (directamente) dentro de un 'RelativeLayout'. – Karu

+0

esto es exactamente lo que necesitaba! Gracias – joshmmo

0

Añadir androide: layout_centerInParent = "true" al elemento que desea centrar en el RelativeLayout

0

Se trabajará para ese código de veces necesitan ambas propiedades

android:layout_gravity="center" 
android:layout_centerHorizontal="true" 
1

respuesta Actualizado: Constraint Layout

Parece que la tendencia en Android ahora es usar un diseño Restricción. Aunque es lo suficientemente simple como para centrar una vista con un RelativeLayout (como han mostrado otras respuestas), el ConstraintLayout es más poderoso que el RelativeLayout para diseños más complejos. Entonces vale la pena aprender cómo hacerlo ahora.

Para centrar una vista, simplemente arrastre los controles a los cuatro lados del elemento principal.

enter image description here

Cuestiones relacionadas