}
//设置描边的宽度和颜色
roundButtonDrawable.setStrokeData(strokeWidth, strokeColor);
return roundButtonDrawable;
}
}
attr代码如下:
<?xml version="1.0" encoding="utf-8"?>2、自定义Button,设置GradientDrawable为背景
因为GradientDrawable是shape标签的具体代码实现,所以,如果我们想通过GradientDrawable来实现圆角等功能需求的话,需要把上一步骤中我们自定义的GradientDrawable来作为button的background,具体代码如下:
/**
-
@author xiaoman
-
可以设置背景色、指定圆角、描边的宽度和颜色
*/
public class RoundButton extends AppCompatTextView {
private RoundButtonDrawable roundButtonDrawable;
public RoundButton(Context context) {
super(context);
init(context, null, 0);
}
public RoundButton(Context context, AttributeSet attrs) {
super(context, attrs, R.attr.RoundButtonStyle);
init(context, attrs, R.attr.RoundButtonStyle);
}
public RoundButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs, defStyleAttr);
}
private void init(Context context, AttributeSet attrs, int defStyleAttr) {
roundButtonDrawable = RoundButtonDrawable.fromAttrSet(context, attrs, defStyleAttr);
ViewHelperUtils.setBackgroundKeepingPadding(this, roundButtonDrawable);
}
/**
-
设置背景颜色
-
@param color
*/
@Override
public void setBackgroundColor(int color) {
roundButtonDrawable. setColor(color);
}
/**
-
设置描边的宽度和颜色
-
@param width
-
@param color