1. 设计自定义对话框样式-->dialog_layout.xml
使用的是线性布局:
第一步: 设置文本TextView
第二步: 设置线性布局 使用图片做为点击事件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:background="@mipmap/dialog_bg"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="真的要退出吗?" android:textSize="34sp" android:textColor="#e61414" android:textStyle="bold" android:layout_marginTop="265dp"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_margin="25dp"> <ImageView android:id="@+id/yes_btn" android:layout_width="120dp" android:layout_height="50dp" android:src="@mipmap/yes_btn" /> <ImageView android:id="@+id/no_btn" android:layout_width="120dp" android:layout_height="50dp" android:src="@mipmap/no_btn" /> </LinearLayout> </LinearLayout>
2.设置对话框的背景style
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="mydialog" parent="android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> </style> </resources>
3.设置activity的Mydialog.java
package com.example.dialog; import android.app.Dialog; import android.content.Context; import android.view.View; import androidx.annotation.NonNull; //1.设计自定义对话框样式-->dialog_layout.xml //2.设计style(去标题栏,去背景) //3.将第一步的布局应用到当前自定义对话框 //4.实例化对话框(参数1:环境上下文 参数2:第二步创建的style R.style.mydialog),并展示show public class Mydialog extends Dialog { public Mydialog(@NonNull Context context, int themeResId) { super(context, themeResId); setContentView(R.layout.dialog_layout); findViewById(R.id.yes_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.exit(0); } }); findViewById(R.id.no_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); //对话框消失 } }); } }
4.实例化对话框并使用show进行展示
package com.example.dialog; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void showNormalDialog(){ AlertDialog dialog = new AlertDialog.Builder(this).create(); dialog.setTitle("提示"); dialog.setMessage("您确定要退出程序吗?"); dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); dialog.show(); } public void myClick(View view) { switch (view.getId()) { case R.id.normal_dialog_btn: //1.实例化一个Buidler //AlertDialog的构造方法时protected AlertDialog.Builder builder = new AlertDialog.Builder(this); //2.设置对话框样式 builder.setTitle("提示"); builder.setMessage("您确定退出程序吗?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); //展示 builder.setNegativeButton("取消", null); builder.show(); // AlertDialog dialog = builder.create(); // dialog.show(); break; case R.id.diy_dialog_btn: Mydialog md = new Mydialog(this, R.style.mydialog); md.show(); break; } } }