【发布时间】:2012-08-04 06:57:43
【问题描述】:
我有一个自定义视图,其中包含一个 RadioButton。
SingleRadioItem:
public class SingleRadioItem extends LinearLayout {
private TextView mTextKey;
private RadioButton mRadioButton;
private ImageView mImageSeparator;
public SingleRadioItem(Context context, AttributeSet attrs) {
super(context, attrs);
View view = LayoutInflater.from(context).inflate(R.layout.rtl_single_radio_item, this, true);
mTextKey = (TextView)view.findViewById(R.id.single_radio_item_text_key);
mRadioButton = (RadioButton)view.findViewById(R.id.single_radio_item_button);
mImageSeparator = (ImageView)view.findViewById(R.id.single_image_separator);
}
public void setKey(String key) {
mTextKey.setText(key);
}
public boolean getSelectedState() {
return mRadioButton.isSelected();
}
public void setSelectedState(boolean selected) {
mRadioButton.setSelected(selected);
}
}
我想创建此视图的实例,将它们添加到 RadioGroup 并将 RadioGroup 添加到 LinearLayout。 当我这样做时,它允许我将所有单选按钮设置为选中状态,这意味着 RadioGroup 无法正常运行(可能是因为我是这样做的......)
RadioGroup radioGroup = new RadioGroup(this);
radioGroup.setOrientation(RadioGroup.VERTICAL);
SingleRadioItem radio1 = new SingleRadioItem(this, null);
SingleRadioItem radio2 = new SingleRadioItem(this, null);
radioGroup.addView(radio1);
radioGroup.addView(radio2);
updateDetailsView.addView(radioGroup);
显然,当我添加 RadioButton radio1 = new RadioButton(this); 时,RadioGroup 运行良好。
是否甚至可以将包含单选按钮的视图添加到单选组,而我只是缺少某些东西或根本不可能?
谢谢!
解决方案: 扩展@cosmincalistru 答案并帮助他人:
对于我添加到 LinearLayout 的每个 SingleRadioItem,我都附加了一个监听器,如下所示:
radio1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (lastRadioChecked != null) {
lastRadioChecked.setCheckedState(false);
}
lastRadioChecked = (SingleRadioItem)v;
lastRadioChecked.setCheckedState(true);
}
});
您还需要将 SingleRadioItem XML 中的 RadioButton View 设置为 clickable:false。
【问题讨论】:
标签: android radio-button radio-group