2010-09-09 14 views
10

Sto provando a disegnare un rettangolo arrotondato con un bordo attorno ad esso utilizzando una classe che estende ShapeDrawable (vedere here) e tutto funziona tranne che il shaperawable sembra tagliare parte del bordo perché la forma stessa non si estende al di fuori di questi limiti.Forma offset all'interno di ShapeDrawable

Non c'è un modo per compensare il punto in cui il disegnabile può iniziare a disegnare in modo che ci sia del padding tra i limiti della forma stessa e del quadro? Ho provato sia ShapeDrawable.setBounds a dimensioni maggiori rispetto alla dimensione intrinseca della forma e ShapeDrawable.setPadding, ma non sembrano arrivare da nessuna parte. Devo dividere la sottoclasse Drawable?

risposta

21

Puoi avvolgere si forma disegnabile con inserto (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" /> 

poi basta usare il inset_shape di cui hai bisogno.

+2

Grazie, ho creato un InsetDrawable in codice: [new InsetDrawable (forma, x, x, x, x)] e passato che invece che risolto. InsetDrawable sembrava un po 'nascosto nei documenti - molto utile –

+2

Ho appena scoperto che invece di passare ad Android: drawable, puoi anche nidificare il drawable, quindi non hai bisogno di due file. Non so perché ho avuto nella mia mente che questo non era possibile. – velis

0

Prova questo nel tuo drawable ...!

<?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

Padding non funziona per me – Gilian