且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

创建一个带有单选按钮列表的自定义对话框

更新时间:2023-11-23 09:47:52

从按钮调用 showRadioButtonDialog().

这只是一个例子:

private void showRadioButtonDialog() {

 // custom dialog

  final Dialog dialog = new Dialog(this);
  dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
  dialog.setContentView(R.layout.dialog_layout);
  List<String> stringList=new ArrayList<>();  // here is list
      for(int i=0;i<2;i++) {
          if (i==0){
              stringList.add("Number Mode");
          }else {
              stringList.add("Character Mode");
          }

      }

      RadioGroup rg = (RadioGroup) dialog.findViewById(R.id.radioGroup);

      for(int i=0;i<stringList.size();i++){
            RadioButton rb=new RadioButton(this); // dynamically creating RadioButton and adding to RadioGroup.
            rb.setText(stringList.get(i));
            rg.addView(rb);
      }
}

您的布局视图可能是:radiobutton_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical">
      <RadioGroup
          android:id="@+id/radio_group"
          android:layout_width="wrap_content"
          android:layout_height="match_parent"
          android:layout_gravity="center_vertical"
          android:orientation="vertical">
    </RadioGroup>
 </LinearLayout>

注意:您可以自定义对话框视图(如设置标题、消息等)

Note: you can customize your dialog view (like setting title, message etc.)

要检索所选 RadioButton 的值,您必须为您的 RadioGroup 实现 setOnCheckedChangeListener 侦听器:

To retrieving value of the selected RadioButton you have to implement setOnCheckedChangeListener listener for your RadioGroup as :

 rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                 int childCount = group.getChildCount();
                 for (int x = 0; x < childCount; x++) {
                    RadioButton btn = (RadioButton) group.getChildAt(x);
                    if (btn.getId() == checkedId) {
                         Log.e("selected RadioButton->",btn.getText().toString());

                    }
                 }
            }
        });