4

カスタムダイアログにラジオボタンを動的にしようとしていますが、カスタムダイアログに追加できません

 final RadioButton[] rb = new RadioButton[5];
 RadioGroup rg = new RadioGroup(this); 
 rg.setOrientation(RadioGroup.VERTICAL);

        // layout params to use when adding each radio button
 LinearLayout.LayoutParams layoutParams = new RadioGroup.LayoutParams(
                RadioGroup.LayoutParams.WRAP_CONTENT,
                RadioGroup.LayoutParams.WRAP_CONTENT);

 LinearLayout ll2 = (LinearLayout) findViewById(R.id.linearMain);

 // add 5 radio buttons to the group

 for (int i = 0; i < 5; i++){
      rb[i] = new RadioButton(this);
      String label = "item set" + i;
      rb[i].setText(label);
      rb[i].setId(i);
      rg.addView(rb[i],layoutParams);

      }
 ll2.addView(rg);

--------------------------------------------------------------------

 Context context=LocationActivity.this;
 dialog=new Dialog(context);
 dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

 dialog.setContentView(R.layout.custom_dialog);
     ----------------------------------------------------------------------

 Linearlayout2 is defined in custom_dialog.xml file. I must be doing something wrong but not able to figure it out. Other widgets are getting displayed except radiogroup buttons.

この問題へのポインタはありがたいです。

ありがとう!Swz

以下のcustom_dialogファイル:

2つのテキストビューウィジェットと宣言されたラジオグループがあります。同じレイアウトをアクティビティ画面に正常に追加できますが、カスタムダイアログには追加できません。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/linlayoutBase"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>

    <LinearLayout
        android:id="@+id/linearLayout3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/TextView03"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="5dip"
            android:text="Longitute: "
            android:textSize="20dip" >
        </TextView>

        <TextView
            android:id="@+id/TextView04"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="unknown"
            android:textSize="20dip" >
        </TextView>
    </LinearLayout>

    <LinearLayout
          android:id="@+id/linearMain"
          android:layout_width="match_parent"
          android:layout_height="wrap_content">

    <RadioGroup
          android:id="@+id/radiogroup"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
    >
    </RadioGroup>

    </LinearLayout>
</LinearLayout>
4

1 に答える 1

6

投稿したXMLを見て、これを試してください。

Context context=LocationActivity.this;
dialog=new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

View view = LayoutInflater.fromContext(context).inflate(R.layout.custom_dialog, null, false);
RadioGroup rg = (RadioGroup) view.findViewById(R.id.radiogroup);
RadioGroup.LayoutParams layoutParams = new RadioGroup.LayoutParams(
                RadioGroup.LayoutParams.WRAP_CONTENT,
                RadioGroup.LayoutParams.WRAP_CONTENT);

 // add 5 radio buttons to the group
RadioButton rb;
for (int i = 0; i < 5; i++){
    rb = new RadioButton(context);
    rb.setText("item set" + i);
    rb.setId(i);
    rg.addView(rb, layoutParams);
}

dialog.setContentView(view);

ダイアログのレイアウトをどのように変更しているかわかりませんでした。そこで、レイアウトを膨らませ、RadioButtonsを追加して、完成したレイアウトをに渡しましたdialog

また、linearMain子は1つしかないため、このLinearLayoutを削除して、を使用するだけで済みますradioGroup

于 2012-11-20T19:58:37.097 に答える