今天突然遇到一个问题, 我需要几个不同边线颜色,不同背景色颜色的矩形框,之前我都是一个需求在drawable中创建一个xml,然后我想,难道没有办法动态改变其属性么,经过查询找到以下方法
//里面的值单位为px,需要讲dp转换为px
GradientDrawable mGroupDrawable= (GradientDrawable) button.getBackground();
/*设置边框颜色和宽度*/
mGroupDrawable.setStroke(dip2px(FamilyDoctorActivity.this,(float)0.5), getResources().getColor(R.color.holo_orange_light));
/*设置整体背景颜色*/
mGroupDrawable.setColor(getResources().getColor(R.color.white));
/*设置圆角*/
mGroupDrawable.setCornerRadius(dip2px(FamilyDoctorActivity.this,(float)4));
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context
.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}