2012-10-04 11 views
17

tengo algunos botones de imagen y cada uno tiene una vista de texto correspondiente, me gustaría alinear esas textview al centro de su imagen correspondiente, es decir, como se ve en el cajón de aplicación ...android - alinear una vista de texto en el centro de otra vista

!-----! 
!icon ! 
!_____! 
app name 

este es mi código, estoy usando un RelativeLayout

<ImageButton 
    android:id="@+id/blog_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/logo_img" 
    android:layout_marginLeft="50dp" 
    android:layout_marginTop="51dp" 
    android:background="@null" 
    android:contentDescription="@string/blog_desc" 
    android:src="@drawable/blog" /> 

<TextView 
    android:id="@+id/blog_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/blog_button" 
    android:layout_below="@+id/blog_button" 
    android:layout_marginTop="8dp" 
    android:text="@string/blog_desc" /> 

Respuesta

28

Wrap que en LinearLayout y centro de los niños, así:

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/logo_img" 
    android:gravity="center_horizontal" 
    android:orientation="vertical"> 

    <ImageButton 
     android:id="@+id/blog_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@null" 
     android:contentDescription="@string/blog_desc" 
     android:src="@drawable/blog" /> 

    <TextView 
     android:id="@+id/blog_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/blog_desc" /> 
</LinearLayout> 
+0

gracias !! ¿Cómo no pensé en esto? un sublayout ... todavía estoy aprendiendo pero me siento estúpido en este momento ...:/ – Hairo

+3

Jason, para referencia futura, ['FrameLayout'] (http://developer.android.com/reference/android/widget/ FrameLayout.html) generalmente no se debe usar para tener varios hijos. Un "LinearLayout" sería el mejor sustituto en este caso. – Eric

+0

no estaba planeando utilizar un 'FrameLayout' de todos modos, pero gracias por la aclaración. – Hairo

14

Publicación anterior, pero si esto puede ayudar, creo que no es necesario agregar un contenedor adicional.

<ImageButton 
    android:id="@+id/blog_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/logo_img" 
    android:layout_marginLeft="50dp" 
    android:layout_marginTop="51dp" 
    android:background="@null" 
    android:contentDescription="@string/blog_desc" 
    android:src="@drawable/blog" /> 

<TextView 
    android:id="@+id/blog_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/blog_button" 
    android:layout_alignRight="@+id/blog_button" 
    android:layout_below="@+id/blog_button" 
    android:gravity="center_horizontal" 
    android:layout_marginTop="8dp" 
    android:layout_marginLeft="-20dp" 
    android:layout_marginRight="-20dp" 
    android:text="@string/blog_desc" /> 

Es un trabajo para mí.

1

Si un el TextView puede ser transparente, entonces esto se puede lograr con una sola vista

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Test string" 
    android:drawableTop="@android:drawable/btn_star" 
    android:background="@android:color/transparent" 
    android:textSize="10sp" 
    /> 
Cuestiones relacionadas