2012-06-25 5 views
6

tengo un ImageView y TextView. Quiero colocar el TextView debajo de la vista de la imagen, pero con el medio del TextView alineado con el medio del ImageView (a lo largo del eje horizontal). Si el texto en el TextView cambia a algo mucho más grande o más pequeño, la mitad del texto siempre debe permanecer alineada con el medio del ImageView. ¿Es esto posible en xml?Android: alinee un elemento a continuación y en el medio de otro

+1

Intermedio medio medio. –

+1

¡Creo que esto se llama el rompecabezas del medio! –

Respuesta

6

Sí, usted simplemente está buscando para contener ambos elementos en una vertical de LinearLayout que tiene android:gravity conjunto de center_horizontal.

Algo como esto:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_horizontal" 
    android:orientation="vertical" 
    ... > 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     ... /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     ... /> 

</LinearLayout> 

Debido a la anchura del TextView 's es wrap_content, estableciendo su gravedad no debería ser necesario. Lo haría solo por seguridad (y, además, puedo establecer el ancho en match_parent también).

+0

Eso es embarazoso porque ya lo hago en otro lugar del código. Gracias de cualquier manera. – AndroidDev

+0

Entonces, ¿funciona para su propósito? Si es la solución, considere marcarla como correcta para que otros puedan encontrarla también. – Eric

+0

No puede marcarlo de inmediato. Tienes que esperar varios minutos. Pacientes Casi siempre los marco. – AndroidDev

0

conjunto TextViewandroid:layout_width="fill_parent" y conjunto android:gravity="center" en TextView.

Creo que te puede ayudar.

Gracias

0

Puede hacer uso de la siguiente manera .. RealtiveLayout

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_horizontal" 
    android:orientation="vertical" 
    ... > 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     ... /> 

    <TextView 
     android:layout_below="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     /> 

</RelativeLayout> 

si desea que su TextView a ser de única línea a continuación, añadir las siguientes propiedades a Textview

androide: ellipsezed = "END" Android: SingleLine = "true"

utilizar un diseño determinado y agregarlo a cualquiera de su diseño existente puede obtener un resultado lo que tu buscas ..

Espero que esta explicación funcione para usted ..

Cuestiones relacionadas