RadioGroup中的Android Radio Radio按钮无法正常工作

时间:2013-01-09 02:15:03

标签: android styles radio-button themes

我有一个包含Scroll View的简单布局,如下所示:

<ScrollView
        android:id="@+id/inputfields"
        android:layout_width="fill_parent"
        android:layout_height="280dp"
        android:clipChildren="true"
        android:measureAllChildren="true"
        android:visibility="gone" >
</ScrollView>

布局的其余部分并不重要。

在OnCreate()中,我将RadioButtons添加到新的RadioGroup,通过setOnCheckedChangeListener()分配我的动作,并将RadioGroup添加到ScrollView容器。请参阅下面的代码摘录。

protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.inputdlg);
//Populate the list
ScrollView layout = ScrollView)findViewById(R.id.inputfields);

Context cont = getContext();

final RadioGroup rg = new RadioGroup(cont);
rg.setScrollContainer(true);

int id = 0; //For the radiogroup the id does not need to be unique
for(String s : mStringsList) {
    RadioButton rb = new RadioButton(cont);
    rb.setText(s);
    rb.setId(id++);
    rb.setGravity(Gravity.CENTER_VERTICAL);
    rg.addView(rb);
}


rg.check(Integer.getInteger(mValue,0)); //0 is the default
rg.setOnCheckedChangeListener(new OnCheckedChangeListener(){
    public void onCheckedChanged(RadioGroup group,  int checkedId) {
        if(mRadioListener!=null)
            mRadioListener.onClick(mEt.getText().toString());
        dismiss();
    }
});
layout.addView(rg);
}

问题。 视图滚动得很好,但单选按钮根本不起作用。我缺少什么?

1 个答案:

答案 0 :(得分:2)

这不是ScrollView或其他任何内容,而是我在Styles.XML中正确定义的自定义RadioButton样式

请参阅以下差异:

糟糕的一个:

<style name="Widget.RadioButtonR" parent="android:Widget">
    <item name="android:background">@drawable/btn_radio_label_background</item>
    <item name="android:button">@drawable/btn_radio_r</item>
</style>

正确的一个:

<style name="Widget.RadioButtonR" parent="@android:style/Widget.CompoundButton.RadioButton">
    <item name="android:background">@drawable/btn_radio_label_background</item>
    <item name="android:button">@drawable/btn_radio_r</item>
    <item name="android:textColor">@color/myfontcolor</item>
</style>