今天因为公司项目需求,需要实现一种类似tab的选项卡,当时直接想到的就是使用RadioGroup和RadioButton来实现。这个方法完全没问题。但是在后来的开发过程中,却遇到了一些困扰很久的小困难。大概需求是:在代码中,动态的获取tab的个数,然后初始化RadioGroup,每一个tab对应一个RadioButton,即加入一个tab就要向RadioGroup中add一个RadioButton,然后在按钮选中时要更改文字颜色。因为是动态添加,所以无法在xml中配置了RadioButton和设置selector来更改文字颜色了。
下面贴上部分代码:
int size = lvl1.size();
for (int i = 0; i < size; i++) {
Question q = lvl1.get(i);
RadioButton btn = getRadioButton(q, i);
radioGroup.addView(btn,
new RadioGroup.LayoutParams(RadioGroup.LayoutParams.MATCH_PARENT,
RadioGroup.LayoutParams.MATCH_PARENT, 1));
if(i == 0){
subLevel.clear();
subLevel.addAll(q.getSubLevel());
adapter.notifyDataSetChanged(); // 数据变化了
btn.setChecked(true)