/** * CategoryView.java * @author zimo2013 * @see http://blog.csdn.net/zimo2013 * */public class CategoryView extends LinearLayout implementsOnCheckedChangeListener {
private LayoutInflater inflater;
public CategoryView(Context context) {
this(context, null);
}
public CategoryView(Context context, AttributeSet attrs) {
super(context, attrs);
inflater = LayoutInflater.from(context);
}
/**添加方法*/public void add(Listlist) {
if (list.size() > 0) {
//加载布局View view = inflater.inflate(R.layout.category_container, null);
addView(view);
RadioGroup radioGroup = (RadioGroup) view.findViewById(R.id.container);
RadioButton bt = newRadioButton(全部);
radioGroup.addView(bt);
// 默认选中radioGroup.check(bt.getId());
// 全部for (String str : list) {
bt = newRadioButton(str);
//实例化新的RadioButtonradioGroup.addView(bt);
}
//为当前RadioGroup设置监听器radioGroup.setOnCheckedChangeListener(this);
}
}
/**创建RadioButton*/private RadioButton newRadioButton(String text) {
RadioButton button = new RadioButton(getContext());
RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,RadioGroup.LayoutParams.WRAP_CONTENT);
//设置内外边距params.leftMargin = 6;
params.rightMargin = 6;
button.setLayoutParams(params);
button.setPadding(4, 0, 4, 0);
//设置背景button.setBackgroundResource(R.drawable.selector_category_bg);
//去掉左侧默认的圆点button.setButtonDrawable(android.R.color.transparent);
//设置不同状态下文字颜色,通过ColorStateList,对应的selector放在res/color文件目录中,否则没有效果button.setTextColor(getResources().getColorStateList(R.color.selector_category_text));
button.setGravity(Gravity.CENTER);
button.setText(text);
return button;
}
@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {
if(mListener != null){
mListener.click(group, checkedId);
}
}
/**指定监听器*/public void setOnClickCategoryListener(OnClickCategoryListener l){
mListener = l;
}
private OnClickCategoryListener mListener;
/**回掉接口*/public interface OnClickCategoryListener{
/**点击事件发生*/public void click(RadioGroup group, int checkedId);
}
}