Android studio 新建日程在activity_main文件中,弹出的对话框是新建的一个dialog的xml文件。对话框单选四个选项,左边底部取消,右边确定。选择一个选项后,该选项会浮动显示在底部
时间: 2023-05-29 18:03:25 浏览: 51
的一个TextView中,点击确定后,将选项内容返回给activity_main,并显示在对应位置。
以下是实现步骤:
1. 在res/layout目录下创建一个新的xml文件,命名为dialog_options.xml,用于定义对话框的布局。
2. 在dialog_options.xml文件中添加一个LinearLayout作为根布局,设置为垂直方向,并添加四个RadioButton作为选项,以及一个底部的取消和确定按钮。
3. 在activity_main.xml文件中添加一个TextView作为底部浮动显示选项内容的视图。
4. 在MainActivity中定义一个方法showOptionsDialog(),用于弹出对话框并处理选项的选择结果。
5. 在showOptionsDialog()方法中,使用AlertDialog.Builder创建对话框,并设置对话框的标题、布局和按钮,以及对选项的选择结果进行处理。
6. 在activity_main.xml文件中添加一个按钮,并将其点击事件绑定到showOptionsDialog()方法。
7. 在MainActivity中定义一个方法updateSelectedOption(),用于更新底部浮动显示选项内容的TextView。
8. 在showOptionsDialog()方法中,选择确定按钮时,调用updateSelectedOption()方法更新选项内容。
以下是代码实现:
1. dialog_options.xml
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<RadioButton
android:id="@+id/radio_option1"
android:text="Option 1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<RadioButton
android:id="@+id/radio_option2"
android:text="Option 2"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<RadioButton
android:id="@+id/radio_option3"
android:text="Option 3"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<RadioButton
android:id="@+id/radio_option4"
android:text="Option 4"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal">
<Button
android:id="@+id/btn_cancel"
android:text="Cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_ok"
android:text="OK"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>
```
2. activity_main.xml
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_show_options"
android:text="Show Options"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
<TextView
android:id="@+id/tv_selected_option"
android:text=""
android:textSize="16sp"
android:textStyle="bold"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="16dp"
android:gravity="center"/>
</RelativeLayout>
```
3. MainActivity.java
```java
public class MainActivity extends AppCompatActivity {
private TextView mSelectedOptionView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSelectedOptionView = findViewById(R.id.tv_selected_option);
Button btnShowOptions = findViewById(R.id.btn_show_options);
btnShowOptions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showOptionsDialog();
}
});
}
private void showOptionsDialog() {
View dialogView = getLayoutInflater().inflate(R.layout.dialog_options, null);
final RadioButton radioOption1 = dialogView.findViewById(R.id.radio_option1);
final RadioButton radioOption2 = dialogView.findViewById(R.id.radio_option2);
final RadioButton radioOption3 = dialogView.findViewById(R.id.radio_option3);
final RadioButton radioOption4 = dialogView.findViewById(R.id.radio_option4);
Button btnCancel = dialogView.findViewById(R.id.btn_cancel);
Button btnOk = dialogView.findViewById(R.id.btn_ok);
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select an option")
.setView(dialogView)
.setCancelable(false)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (radioOption1.isChecked()) {
updateSelectedOption("Option 1");
} else if (radioOption2.isChecked()) {
updateSelectedOption("Option 2");
} else if (radioOption3.isChecked()) {
updateSelectedOption("Option 3");
} else if (radioOption4.isChecked()) {
updateSelectedOption("Option 4");
}
}
});
final AlertDialog dialog = builder.create();
dialog.show();
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
}
private void updateSelectedOption(String option) {
mSelectedOptionView.setText(option);
}
}
```