0

我已经动态创建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从上述方法返回的返回值被添加到 aLinearLayout中,该 a 再次包含在 aScrollView中。

4

1 回答 1

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 在模拟器上的行为不端

对于模拟器和真实设备上的不同行为,原因仍然未知。

于 2013-01-21T13:06:00.193 回答