2013-04-22 91 views
3

我有這個xml;代碼中繪製的圓角半徑和物品

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/back" /> 
    <item> 
     <shape> 
      <solid/> 
      <stroke android:width="1dip" android:color="#25786" /> 
      <corners android:radius="10dip"/> 
      <padding android:left="0dip" android:top="0dip" 
        android:right="0dip" android:bottom="0dip" /> 
     </shape> 
    </item> 
</layer-list> 

現在我通過代碼來這樣做:

Drawable[] layers = new Drawable[2]; 

    ShapeDrawable sd1 = new ShapeDrawable(new RectShape()); 
    sd1.getPaint().setColor(0xFFFFFFFF); 
    sd1.getPaint().setStyle(Style.STROKE); 
    sd1.getPaint().setStrokeWidth(1); 

    layers[0] = sd1; 

    LayerDrawable composite = new LayerDrawable(layers); 

,但我不能爲<corners android:radius="10dip"/>代碼,並<item android:drawable="@drawable/back" />

怎麼辦呢?

編輯1

Drawable[] layers = new Drawable[2]; 

ShapeDrawable sd1 = new ShapeDrawable(new RectShape()); 
sd1.getPaint().setColor(0xFFFFFFFF); 
sd1.getPaint().setStyle(Style.STROKE); 
sd1.getPaint().setStrokeWidth(1); 
sd1.getPaint().setPathEffect(new CornerPathEffect(10)); 

layers[1] = sd1; 
layers[0] = getResources().getDrawable(R.drawable.pie_chart_back); 

LayerDrawable composite = new LayerDrawable(layers); 
+0

要設置從代碼見(梯度可繪)角:http://stackoverflow.com/questions/8709595/how-to-set-corner-radiuses-for-the-button-in-java-code – samosaris 2013-11-13 21:07:54

回答

4

就像在你的XML,你需要三個Drawable S,沒有之一。一個是LayerDrawable包含其他人。另一人失蹤可能是BitmapDrawable,具體取決於@drawable/back

您正在尋找的角落效果位於您的Drawable的的CornerPathEffect,請參閱Paint.setPathEffect

+0

爲什麼使用3個drawable?我已經有LayerDrawable – Goofy 2013-04-22 08:55:27

+0

請看我的編輯,讓我知道它是好的? – Goofy 2013-04-22 08:59:32

+0

@Goofy你說得對,'LayerDrawable'已經存在,所以只有'BitmapDrawable'丟失。 - 你是什麼意思「CornerPathEffect_is不存在_? – 2013-04-22 08:59:57

0

試試這個...!

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