Android 在运行时单击肯定按钮更改警报对话框布局
如何在运行时更改自定义警报对话框的布局(onclick\u positive\u按钮) 示例:创建Android 在运行时单击肯定按钮更改警报对话框布局,android,android-alertdialog,android-dialogfragment,customdialog,Android,Android Alertdialog,Android Dialogfragment,Customdialog,如何在运行时更改自定义警报对话框的布局(onclick\u positive\u按钮) 示例:创建警报对话框,使用布局1onClick,将正向按钮更改为布局2 AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); final LayoutInflater inflater = this.getLayoutInflater(); View dialogView = in
警报对话框
,使用布局1onClick
,将正向按钮更改为布局2
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
final LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.layout_1, null);
dialogBuilder.setView(dialogView);
final AlertDialog finalAlertDialog = alertDialog;
dialogBuilder.setPositiveButton("time",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
View view= inflater.inflate(R.layout.layout_2,null);
finalAlertDialog.setContentView(view);
finalAlertDialog.show();
}
});
dialogBuilder.setNegativeButton("cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog = dialogBuilder.create();
alertDialog.show();
直接用这个,
dialogBuilder.setContentView(R.layout.layout_2);
根据您的要求,我建议您只为dialog创建一个xml文件,并在需要时使您的组件可见和不可见,因此首先创建xml文件,如下所示
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<TextView
android:id="@+id/Textbox1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:hint="Enter Your Text Here"
android:text="Hello ,there !"
android:textSize="25dp" />
<TextView
android:id="@+id/TextBox2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/Textbox1"
android:layout_marginTop="30dp"
android:hint="Your Text Appears Here"
android:textSize="25dp" />
<Button
android:id="@+id/CopyText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/TextBox2"
android:layout_marginLeft="107dp"
android:layout_marginStart="107dp"
android:layout_marginTop="85dp"
android:text="Copy Text" />
</RelativeLayout>
在finalAlertDialog.show()之前添加dialog.disclose();谢谢你的重播。。。我收到此错误:尝试在空对象引用上调用虚拟方法“void android.support.v7.app.AlertDialog.setContentView(int)”。此操作刚刚关闭对话框。感谢您的回复,它为我提供了新的警报对话框,我需要用新的布局替换现有布局。
LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);
final View promptView = layoutInflater.inflate(R.layout.activity_main, null);
final android.app.AlertDialog alertDialog = new android.app.AlertDialog.Builder(MainActivity.this)
.setView(promptView)
.setCancelable(false)
.setPositiveButton("time", null)
.setNegativeButton("cancel", null)
.create();
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button btn_positive = alertDialog.getButton(android.app.AlertDialog.BUTTON_POSITIVE);
Button btn_negative = alertDialog.getButton(android.app.AlertDialog.BUTTON_NEGATIVE);
btn_positive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button btn = (Button) promptView.findViewById(R.id.CopyText);
/* Here i set button visibility gone so the same xml file but updated
here you can set other component visibility Visible and Visibility.Gone
as per your requirement */
if (btn.getVisibility() == View.GONE) {
alertDialog.dismiss();
} else {
btn.setVisibility(View.GONE);
}
}
});
btn_negative.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
}
});
}
});
alertDialog.show();