2011-12-23 73 views
1

我在xml文件中定义了这种形状,并且需要在代码中创建它,但难住了。Android:我将如何在代码中创建此资源形状?

我假设我想实例化一个RoundRectShape并将它的属性设置为xml中的属性,但属性排列得不太好。

RoundRectShape(float[] outerRadii, RectF inset, float[] innerRadii) 

我的XML形状只有1个半径,现在RectF和RoundRectShape具有设置填充或颜色没有选项?

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#00FFFFFF" /> 
    <stroke android:width="2dp" android:color="#FFFFFFFF" /> 
    <padding android:left="7dp" android:top="7dp" 
      android:right="7dp" android:bottom="7dp" /> 
    <corners android:radius="4dp" /> 
</shape> 

回答

2

您需要创建自定义绘制siomething像下面

示例代码

public class CustomDrawable extends ShapeDrawable{ 
    Paint fillpaint, strokepaint; 
    private static final int WIDTH = 2; 

@Override 
protected void onDraw(Shape shape, Canvas canvas, Paint paint) { 
    // TODO Auto-generated method stub 
// super.onDraw(shape, canvas, paint); 
    fillpaint = this.getPaint(); 
    strokepaint = new Paint(fillpaint); 
    strokepaint.setStyle(Paint.Style.STROKE); 
    //to set stroke width and color instead of <stroke android:width="2dp" android:color="#FFFFFFFF" /> 
    strokepaint.setStrokeWidth(WIDTH); 
    strokepaint.setARGB(255, 255, 255, 255); 

    shape.draw(canvas, fillpaint); 
    shape.draw(canvas, strokepaint); 

} 
}