一:.java文件
public class SegmentedGroup extends RadioGroup {
private int mMarginDp ;
private Resources resources ;
private int mTintColor ;
private int mCheckedTextColor = Color. WHITE ;
private LayoutSelector mLayoutSelector ;
private Float mCornerRadius ;
public SegmentedGroup(Context context) {
super (context) ;
resources = getResources() ;
mTintColor = resources .getColor(R.color. radio_button_selected_color ) ;
mMarginDp = ( int ) getResources().getDimension(R.dimen. radio_button_stroke_border ) ;
mCornerRadius = getResources().getDimension(R.dimen. radio_button_conner_radius ) ;
mLayoutSelector = new LayoutSelector( mCornerRadius ) ;
}
/* Reads the attributes from the layout */
private void initAttrs (AttributeSet attrs) {
TypedArray typedArray = getContext().getTheme().obtainStyledAttributes(
attrs ,
R.styleable. SegmentedGroup ,
0 , 0 ) ;
try {
mMarginDp = ( int ) typedArray.getDimension(
R.styleable. SegmentedGroup_sc_border_width ,
getResources().getDimension(R.dimen. radio_button_stroke_border )) ;
mCornerRadius = typedArray.getDimension(
R.styleable. SegmentedGroup_sc_corner_radius ,
getResources().getDimension(R.dimen. radio_button_conner_radius )) ;
mTintColor = typedArray.getColor(
R.styleable. SegmentedGroup_sc_tint_color ,
getResources().getColor(R.color. radio_button_selected_color )) ;
mCheckedTextColor = typedArray.getColor(
R.styleable. SegmentedGroup_sc_checked_text_color ,
getResources().getColor(android.R.color. white )) ;
} finally {
typedArray.recycle() ;
}
}
public SegmentedGroup(Context context , AttributeSet attrs) {
super (context , attrs) ;
resources = getResources() ;
mTintColor = resources .getColor(R.color. radio_button_selected_color ) ;
mMarginDp = ( int ) getResources().getDimension(R.dimen. radio_button_stroke_border ) ;
mCornerRadius = getResources().getDimension(R.dimen. radio_button_conner_radius ) ;
initAttrs(attrs) ;
mLayoutSelector = new LayoutSelector( mCornerRadius ) ;
}
@Override
protected void onFinishInflate () {
super .onFinishInflate() ;
//Use holo light for default
updateBackground() ;
}
public void setTintColor ( int tintColor) {
mTintColor = tintColor ;
updateBackground() ;
}
public void setTintColor ( int tintColor , int checkedTextColor) {
mTintColor = tintColor ;
mCheckedTextColor = checkedTextColor ;
updateBackground() ;
}
public void updateBackground () {
int count = super .getChildCount() ;
for ( int i = 0 ; i < count ; i++) {
View child = getChildAt(i) ;
updateBackground(child) ;
<