我有一个包含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);
}
问题。 视图滚动得很好,但单选按钮根本不起作用。我缺少什么?
答案 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>