2

我有一个包含滚动视图的简单布局,如下所示:

<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);
}

问题。 视图滚动良好,但单选按钮根本不起作用。我错过了什么?

4

1 回答 1

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>
于 2013-01-09T23:35:05.683 回答