Radiogroups在仿真器中表现不正常

时间:2012-12-27 11:26:43

标签: android android-layout android-emulator

我已动态创建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>

用于创建RadiobuttonsRadiogroup

的示例代码
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}}中。

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

对于仿真器和真实设备上的不同行为,原因尚不清楚。