2010-04-26 10 views
26

Tengo un LinearLayout que tiene una imagen de fondo (un archivo png parcheado 9). ¿Cómo puedo agregar relleno a la izquierda y derecha para que la imagen de fondo no ocupe todo el ancho? He intentado android:paddingLeft y android:paddingRight, pero eso no cambia nada.Cómo agregar relleno para la imagen de fondo

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:paddingLeft="25dip" 
    android:paddingRight="25dip" 
    android:background="@drawable/background"> 

El fondo completo todavía se extiende a todo el ancho de la pantalla.

Respuesta

3

Eso no funciona porque el relleno solo actúa sobre el contenido del LinearLayout. Al usar un segundo LinearLayout dentro de este, el relleno tendrá efecto. Debe definir el color de fondo del primer LinearLayout que será visible en el área de relleno.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:paddingLeft="25dip" 
    android:paddingRight="25dip" 
    android:background="#FF000000"> 

    <LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background"> 

    </LinearLayout> 

</LinearLayout> 

Nota: Esto probablemente también sea posible utilizando un archivo XML para el fondo.

+0

esto no es tan bueno, ya que aumenta la profundidad de la jerarquía. ¿Puedes extender la respuesta con los detalles sobre cómo implementar esto con XML? –

+0

he publicado otra solución usando inserto extraíble, por lo que no es necesario extenderla. gracias. –

+1

Puede mejorar este diseño cambiando el LinearLayout externo con un FrameLayout – vovahost

83

Debe utilizar dibujable XML, diseñado especialmente para este propósito - recuadro Disponibles: http://developer.android.com/guide/topics/resources/drawable-resource.html#Inset

Por ejemplo:

res/estirable/inset_background.xml:

<?xml version="1.0" encoding="utf-8"?> 
<inset xmlns:android="http://schemas.android.com/apk/res/android" 
    android:drawable="@drawable/your_background_image" 
    android:insetRight="25dip" 
    android:insetLeft="25dip" /> 

y luego en su diseño xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/inset_background"> 
+0

Esto no tiene el resultado esperado para mí, tengo este mismo problema exacto http://stackoverflow.com/questions/26850400/inset-drawable-not- working-as-described-in-documentation –

2

sólo puede utilizar

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:layout_marginLeft="25dip" 
android:layout_marginRight="25dip" 
android:background="@drawable/background"> 
5

Ur dibujable fondo debería ser así, el uso de Android: parte inferior

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:bottom="48dp" android:drawable="@drawable/bg"> 
    </item> 

</layer-list> 
+0

¡Esta solución realmente funciona! –

+0

Has salvado a mi hermano de la vida. – viper

Cuestiones relacionadas