android_实例_利用radiobutton实现分类筛选,Android_实例_利用RadioButton实现分类筛选...

这篇博客介绍了一个名为CategoryView的自定义视图类,它继承自LinearLayout,并实现了OnCheckedChangeListener接口。CategoryView主要用于展示一个RadioGroup,可以动态添加RadioButton,并设置默认选中项。博客详细讲解了如何添加RadioButton,设置内外边距,背景,文字颜色等属性,以及如何监听RadioGroup的点击事件。此外,还提供了一个OnClickCategoryListener接口用于外部监听点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/** * CategoryView.java * @author zimo2013 * @see http://blog.youkuaiyun.com/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);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值