本文介绍最常用的四种对话框的使用方法,包括普通(包含提示消息和按钮)对话框、列表展示对话框、加载对话框、编辑对话框等多种形式。
一、前期准备
1. 设置对话框背景 dialog_bg_normal.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="10dp"/>
<solid android:color="@color/white"/>
<stroke android:color="#cbcbcb" android:width="1px"/>
</shape>
2. 设置风格
<style name="customDialog" parent="@android:style/Theme.Dialog">
<!--dialog的背景,此处是一个圆角白底的xml文件,也可以是.9图-->
<item name="android:windowBackground">@drawable/dialog_bg_normal</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowFrame">@null</item><!--边框-->
<item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
<item name="android:windowIsTranslucent">true</item><!--半透明-->
<item name="android:windowNoTitle">true</item><!--无标题-->
<item name="android:backgroundDimEnabled">true</item><!--模糊-->
</style>
3. 自定义对话框
/**
* Created on 2021/11/13 11:45
*
* @author Gong Youqiang
*/
public class CommonDialog extends Dialog {
private Window mWindow;
public CommonDialog(@NonNull Context context) {
super(context);
}
public CommonDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
}
protected CommonDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}
public void setView(View view) {
setContentView(view);
}
public void setView(int ID) {
setContentView(ID);
}
public void setProperty(int x,int y,int w,int h) {
mWindow = getWindow();
WindowManager.LayoutParams params = mWindow.getAttributes();
params.x = x; //设置对话框的位置,0为中间
params.y = y;
params.width = w;
params.height = h;
params.alpha = 1.0f; //设置对话框的透明度,1f不透明
params.gravity = Gravity.CENTER; //设置显示在中间
mWindow.setAttributes(params);
}
}
二、普通(包含提示消息和按钮)对话框
1. 效果图
2. 布局文件 dialog_device_add_notice.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/ll_before"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/txt_title"
android:layout_width="match_parent"
android:layout_height="@dimen/DIMEN_40dp"
android:layout_marginTop="@dimen/DIMEN_20dp"
android:gravity="center"
android:text="操作提示"
android:textColor="@color/black_ff"
android:textSize="@dimen/DIMEN_18sp" />
<TextView
android:id="@+id/txt_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/DIMEN_20dp"
android:layout_marginLeft="@dimen/DIMEN_40dp"
android:layout_marginRight="@dimen/DIMEN_40dp"
android:layout_marginTop="@dimen/DIMEN_20dp"
android:text=""
android:textColor="@color/black_aa"
android:textSize="@dimen/DIMEN_15sp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/DIMEN_20dp">
<TextView
android:id="@+id/txt_cancle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="@drawable/btn_code_rq_nor"
android:gravity="center"
android:paddingBottom="@dimen/DIMEN_8dp"
android:paddingLeft="@dimen/DIMEN_30dp"
android:paddingRight="@dimen/DIMEN_30dp"
android:paddingTop="@dimen/DIMEN_8dp"
android:text="取消"
android:textSize="@dimen/DIMEN_15sp" />
<TextView
android:id="@+id/txt_ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="@drawable/v2_btn_blue_ok"
android:gravity="center"
android:paddingBottom="@dimen/DIMEN_8dp"
android:paddingLeft="@dimen/DIMEN_30dp"
android:paddingRight="@dimen/DIMEN_30dp"
android:paddingTop="