由于项目里radioGroup里,4个选项里加载的是webview,而不是radiobutton本身自己可设置的text类型,并且每个webview都需要和radiobutton对齐,所以这个布局有点费劲。。。
起初想的是,radiogroup包括着4个水平布局的linearlayout,每个linearlayout包括着radiobutton和webview,布局展示上没有问题,结果运行出来,单选的题竟然可以变成多选,radiobutton不再对这4个radiobutton起管理作用了,网上查资料,原来raidogroup和radiobutton中间不能嵌套别的layout,否则就失去单选作用了。
解决: 自定义了个radioGroup,用4个水平布局的linearlayout,每个layout放一个button和webview,然后为这4个button绑定相同的监听器,代码如下:
private Button rbA; private Button rbB; private Button rbC; private Button rbD; rbA.setOnClickListener(selectChangedListener); rbB.setOnClickListener(selectChangedListener); rbC.setOnClickListener(selectChangedListener); rbD.setOnClickListener(selectChangedListener); //单选题按钮监听 OnClickListener selectChangedListener=new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub isSelected = true; if(v.getId()==rbA.getId()){ rbB.setEnabled(false); rbC.setEnabled(false); rbD.setEnabled(false); }else if(v==rbB){ rbA.setEnabled(false); rbC.setEnabled(false); rbD.setEnabled(false); }else if(v==rbC){ rbA.setEnabled(false); rbB.setEnabled(false); rbD.setEnabled(false); } else if(v==rbD){ rbA.setEnabled(false); rbB.setEnabled(false); rbC.setEnabled(false); } if(("<p>"+((Button) v).getText().toString()+"</p>").equals(subject[GPUtils.subjectLoaded-1][8])) { textViewSelectResult.setText("恭喜你,答对了!"); linearSelectResult.setVisibility(View.VISIBLE); GPUtils.wellDone+=1; }else { textViewSelectResult.setText("很遗憾,答错了!"); linearSelectResult.setVisibility(View.VISIBLE); } } };