2014年4月7日 星期一

android RadioButton set button in code

setButtonDrawable(getRadioIcon());


private StateListDrawable getRadioIcon() {
StateListDrawable states = new StateListDrawable();
states.addState(new int[] { android.R.attr.state_checked },
getCheckedIcon());
states.addState(new int[] { -android.R.attr.state_checked },
getNormalIcon());
states.addState(new int[] {}, getNormalIcon());
return states;
}

private GradientDrawable getNormal() {
int size = GSet.getMargin(40);
int strokeWidth = GSet.getMargin(3); // 3dp
int strokeColor = Color.parseColor("#0199fc");
int fillColor = Color.parseColor("#00000000");
GradientDrawable gd = new GradientDrawable();
gd.setSize(size, size);
gd.setShape(GradientDrawable.OVAL);
gd.setColor(fillColor);
gd.setStroke(strokeWidth, strokeColor);
return gd;
}

private GradientDrawable getChecked() {
int fillColor = Color.BLACK;
GradientDrawable gd = new GradientDrawable();
gd.setShape(GradientDrawable.OVAL);
gd.setColor(fillColor);
return gd;
}

private LayerDrawable getNormalIcon() {
Drawable[] layers = new Drawable[1];
layers[0] = getNormal();
LayerDrawable drawable = new LayerDrawable(layers);
int margin = GSet.getMargin(5);
drawable.setLayerInset(0, margin, margin, margin, margin);
return drawable;
}

private LayerDrawable getCheckedIcon() {
Drawable[] layers = new Drawable[2];
layers[0] = getNormal();
layers[1] = getChecked();
LayerDrawable drawable = new LayerDrawable(layers);
int margin = GSet.getMargin(5);
drawable.setLayerInset(0, margin, margin, margin, margin);
margin = GSet.getMargin(15);
drawable.setLayerInset(1, margin, margin, margin, margin);
return drawable;
}

沒有留言:

張貼留言