我已动态创建RadioButtons
并将其添加到Radiogroup
。之后Radiogroup
被添加到LinearLayout
。
我的问题是,一切设备都能很好地工作,但模拟器。
在模拟器中,我可以选择所有单选按钮,与其行为相反。
有任何线索吗?
示例xml如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/sam_bg"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/tvReportTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/mediumblue"
android:textColor="@color/white"
android:visibility="gone"
/>
<LinearLayout
android:id="@+id/llGtResponseContainer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
用于创建Radiobuttons
和Radiogroup
public LinearLayout getLayout(ViewGroup vg) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
view = (LinearLayout) inflater.inflate(R.layout.single_type, vg, false);
TextView tv = (TextView)view.findViewById(R.id.txt_single);
if(isCompulsory) {
question = "• " + question;
}
tv.setText(question);
radioView = (RadioGroup) view.findViewById(R.id.single_rg);
for(String i : responseArray) {
RadioButton rb = new RadioButton(context);
// rb.setText(i);
String str = i;
if(str.trim().split("\\|").length > 1) {
rb.setText((str.trim().split("\\|"))[0]);
rb.setTag((str.trim().split("\\|"))[1]);
}
else {
rb.setText(str);
rb.setTag(str);
}
radioView.addView(rb);
}
return view;
}
稍后,从上述方法返回的返回View
会被添加到LinearLayout
中,该ScrollView
又包含在{{1}}中。
答案 0 :(得分:1)
通过setId()方法向RadioButtons提供“id”。 以下是示例代码:
rgroup = (RadioGroup)findViewById(R.id.rg);
final RadioButton[] rb = new RadioButton[5];
for (int i = 0; i < 5; i++) {
rb[i]=new RadioButton(this);
rb[i].setText("rdo"+i);
rb[i].setId(i);
rgroup.addView(rb[i]);
}
来自Android RadioButtons misbehaving on Emulator only
对于仿真器和真实设备上的不同行为,原因尚不清楚。