2012-12-21 9 views
6

Próbuję narysować mniejsze koło w innym kółku. Wydaje się całkiem proste, ale mam z tym problem i nie mogłem znaleźć odpowiedzi. Kod im przy użyciu to:Jak narysować mniejsze ShapeDrawable wewnątrz innego shapeDrawable programowo

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,}); 

Ale to nie działał, co się dzieje, jest to, że mniejsze koło uzyskać tak duży jak The większego okręgu. A więc jedyne, co pokazuje, to czarne kółko o rozmiarze większego Krzyża. Byłbym bardziej atrakcyjny, gdyby ktoś mógł pomóc. Z góry dziękuję.

Odpowiedz

18

zmienić kolejność,

Drawable[] d = {smallerCircle,biggerCircle}; 

LayerDrawable composite1 = new LayerDrawable(d); 

spróbować jak to

 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

Dzięki za odpowiedź, ale Bogate i nadal dzieje się to samo. – Alan

+0

Spójrz na edycję pls, próbowałem to działa dla mnie – Talha

+0

Dla innych osób, które przeczytają to po prostu zapłać, że mniejszy krąg to większy okrąg. Używałem setPadding do kręgu smalerów i powinno być na odwrót. Wielkie dzięki za odpowiedź. – Alan

Powiązane problemy