Android studio用代码做一个对话框,对话框中是四个单选选项,分别为1,2,3,4,对话框中还有两个按钮,分别为取消和确定。选中选项点击确定后,将所选中项浮动显示在底端,对话框用线性布局实现。请给出代码
时间: 2023-05-28 09:04:32 浏览: 248
首先,在布局文件中添加一个按钮,用于触发对话框的显示:
```xml
<Button
android:id="@+id/btn_show_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show Dialog" />
```
接着,创建一个自定义对话框的布局文件 dialog_custom.xml,其中包含一个线性布局和两个按钮:
```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="wrap_content"
android:layout_margin="16dp"
android:orientation="vertical">
<RadioGroup
android:id="@+id/radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/radio_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 1" />
<RadioButton
android:id="@+id/radio_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 2" />
<RadioButton
android:id="@+id/radio_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 3" />
<RadioButton
android:id="@+id/radio_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 4" />
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel" />
<Button
android:id="@+id/btn_ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK" />
</LinearLayout>
</LinearLayout>
```
然后,在代码中实现对话框的显示和事件处理:
```java
public class MainActivity extends AppCompatActivity {
private Button btnShowDialog;
private TextView tvSelectedOption;
private int selectedOption = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnShowDialog = findViewById(R.id.btn_show_dialog);
tvSelectedOption = findViewById(R.id.tv_selected_option);
btnShowDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog();
}
});
}
private void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
View dialogView = getLayoutInflater().inflate(R.layout.dialog_custom, null);
builder.setView(dialogView);
RadioGroup radioGroup = dialogView.findViewById(R.id.radio_group);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radio_1:
selectedOption = 1;
break;
case R.id.radio_2:
selectedOption = 2;
break;
case R.id.radio_3:
selectedOption = 3;
break;
case R.id.radio_4:
selectedOption = 4;
break;
}
}
});
Button btnCancel = dialogView.findViewById(R.id.btn_cancel);
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectedOption = -1;
dismissDialog();
}
});
Button btnOk = dialogView.findViewById(R.id.btn_ok);
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (selectedOption != -1) {
tvSelectedOption.setText("Selected option: " + selectedOption);
}
dismissDialog();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
private void dismissDialog() {
FragmentManager manager = getSupportFragmentManager();
DialogFragment fragment = (DialogFragment) manager.findFragmentByTag("custom_dialog");
if (fragment != null) {
fragment.dismiss();
}
}
}
```
在代码中,首先找到布局文件中的按钮和文本视图,并在按钮的点击事件监听器中调用 showDialog() 方法来显示自定义对话框。
在 showDialog() 方法中,我们创建一个 AlertDialog.Builder 对象,并通过 getLayoutInflater().inflate() 方法来加载自定义对话框的布局文件 dialog_custom.xml。
然后,我们找到对话框中的 RadioGroup,并为其设置一个选中状态变化的监听器。在监听器中,我们根据选中的 RadioButton 的 ID 来确定所选中的选项。
接着,我们找到对话框中的取消和确定按钮,并分别为它们设置点击事件监听器。在取消按钮的监听器中,我们重置选项的值,并调用 dismissDialog() 方法来关闭对话框。在确定按钮的监听器中,我们检查是否有选中的选项,如果有,则将其浮动显示在底部的文本视图中,并调用 dismissDialog() 方法来关闭对话框。
最后,我们在 showDialog() 方法中创建一个 AlertDialog 对象,并调用 show() 方法来显示对话框。如果需要关闭对话框,我们可以调用 dismissDialog() 方法来关闭它。
阅读全文