2012-12-21 9 views
6

Sto cercando di disegnare un cerchio più piccolo all'interno di un'altra cerchia. Sembra abbastanza semplice, ma sto avendo problemi con questo e non ho potuto trovare una risposta. L'im codice utilizzando è:Come disegnare un ShapeDrawable più piccolo all'interno di un'altra formaDrawable a livello di codice

ShapeDrawable biggerCircle= new ShapeDrawable(new OvalShape()); 
    biggerCircle.setIntrinsicHeight(60); 
    biggerCircle.setIntrinsicWidth(60); 
    biggerCircle.setBounds(new Rect(0, 0, 60, 60)); 
    biggerCircle.getPaint().setColor(Color.BLUE); 

    ShapeDrawable smallerCircle= new ShapeDrawable(new OvalShape()); 
    smallerCircle.setIntrinsicHeight(10); 
    smallerCircle.setIntrinsicWidth(10); 
    smallerCircle.setBounds(new Rect(0, 0, 10, 10)); 
    smallerCircle.getPaint().setColor(Color.BLACK); 
    smallerCircle.setPadding(50,50,50,50); 

    LayerDrawable composite1 = new LayerDrawable(new Drawable[] biggerCircle,smallerCircle,}); 

Ma che non ha funzionato, ciò che accade è che il cerchio più piccolo ottiene grande come il cerchio più grande. Quindi l'unica cosa che mostra è come un cerchio nero con le dimensioni del grandeCircle. Vorrei apriciare se qualcuno potesse aiutare. Grazie in anticipo.

risposta

18

cambiare l'ordine,

Drawable[] d = {smallerCircle,biggerCircle}; 

LayerDrawable composite1 = new LayerDrawable(d); 

provare come questo

 ShapeDrawable biggerCircle= new ShapeDrawable(new OvalShape()); 
     biggerCircle.setIntrinsicHeight(60); 
     biggerCircle.setIntrinsicWidth(60); 
     biggerCircle.setBounds(new Rect(0, 0, 60, 60)); 
     biggerCircle.getPaint().setColor(Color.BLUE); 

     ShapeDrawable smallerCircle= new ShapeDrawable(new OvalShape()); 
     smallerCircle.setIntrinsicHeight(10); 
     smallerCircle.setIntrinsicWidth(10); 
     smallerCircle.setBounds(new Rect(0, 0, 10, 10)); 
     smallerCircle.getPaint().setColor(Color.BLACK); 
     smallerCircle.setPadding(50,50,50,50); 
     Drawable[] d = {smallerCircle,biggerCircle}; 

     LayerDrawable composite1 = new LayerDrawable(d); 

     btn.setBackgroundDrawable(composite1); 

enter image description here

+0

Grazie per la risposta, ma ho provato e succede sempre la stessa cosa. – Alan

+0

Guarda i pls di modifica, ho provato che funziona per me – Talha

+0

Per le altre persone che leggeranno questo basta pagare attetion che il cerchio più piccolo è in realtà il cerchio più grande. Stavo usando setPadding al cerchio smaler e dovrei essere il contrario. Grazie mille per la risposta. – Alan

Problemi correlati