2010-09-09 8 views
10

Estoy tratando de dibujar un rectángulo redondeado con un borde alrededor usando una clase que amplíe ShapeDrawable (vea here) y todo funciona, excepto que el dibujado parece estar cortando parte del borde porque la forma en sí misma no se extiende fuera de esos límites.Forma de desplazamiento dentro de ShapeDrawable

¿No hay alguna forma de compensar el inicio del dibujo del dibujo forzado para que haya algo de relleno entre los límites de la forma misma y el lienzo? He intentado ambos ShapeDrawable.setBounds a un tamaño mayor que el tamaño intrínseco de la forma y ShapeDrawable.setPadding, pero no parece estar llegando a ninguna parte. ¿Debería estar subclasificando Drawable en su lugar?

Respuesta

21

Usted puede envolver a dar forma estirable con la inserción (inset_shape.xml):

<inset xmlns:android="http://schemas.android.com/apk/res/android" 
    android:drawable="@drawable/your_shape_drawable" android:insetBottom="10dip" 
    android:insetLeft="10dip" android:insetRight="10dip" android:insetTop="10dip" 
    android:visible="true" /> 

Entonces sólo tiene que utilizar el inset_shape como sea necesario.

+2

Gracias, lo creó un InsetDrawable en código: [nuevo InsetDrawable (forma, x, x, x, x)] y se pasan a que en lugar que resolvió. InsetDrawable parecía un poco escondido en los documentos, muy útil –

+2

Acabo de encontrar que en lugar de pasar android: dibujable, también puedes anidar el dibujable, por lo que no necesitas dos archivos. No sé por qué tenía en mente que esto no era posible. – velis

0

¡Prueba esto en tu dibujo ...!

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <solid android:color="#e1e1e1" /> 

    <stroke 
     android:width="2dp" 
     android:color="#808080" /> 

    <corners android:radius="10dp" /> 

    <padding 
     android:bottom="5dp" 
     android:left="5dp" 
     android:right="5dp" 
     android:top="5dp" /> 

</shape> 
+0

Relleno no funciona para mí – Gilian

Cuestiones relacionadas