Android常用对话框大全自定义Dialog的三种方式(Theme,PopupWindow,Dialog)

Posted 宾有为

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android常用对话框大全自定义Dialog的三种方式(Theme,PopupWindow,Dialog)相关的知识,希望对你有一定的参考价值。

android Dialog自定义的方式有很多,例如:Theme、Dialog、PopupWindow、AlertDialog、View等方式。

Android常用对话框系列文章

【Android】常用对话框大全(一)Android Dialog

【Android】常用对话框大全(二)Material Dialog

【Android】常用对话框大全(三)自定义Dialog的三种方式(Theme,PopupWindow,Dialog)

目录

Theme

使用Theme的方式自定义Dialog,应该很少人知道这一方法。如果你希望你的Dialog拥有生命周期,使用此方式定义一个Dialog即可实现一个拥有生命周期的对话框。

使用步骤:

1、创建一个Activity


2、编写布局文件与样式

3、为创建的Activiity设置一个对话框的主题

<activity android:name=".ThemeDialogActivity"
            android:theme="@style/Theme.Material3.Light.Dialog"></activity>

4、启动对话框

startActivity(Intent(this, ThemeDialogActivity::class.java))

代码效果效果如下:

使用此方式创建的Dialog,它的表面上是一个普普通通的对话框,实际上是一个Activity的一个界面。

PopupWindow

PopupWindow可用于显示任意视图的弹出窗口。

PopupWindow可在弹出、隐藏的时候使用动画来展示。

PopupWindow是一个浮动容器,出现在当前活动的顶部,鉴于此,使得自定义Dialog的方式又多了一种。

使用步骤:

1、创建一个布局文件

2、紧接着将PopupWindow实例化

val popupWindow = PopupWindow(this)
val inflate = LayoutInflater.from(this).inflate(R.layout.dialog_popupdialog, null, false)
popupWindow.contentView = inflate
// 解决布局无法覆盖屏幕边边的问题
popupWindow.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
// 设置popupWindow宽高
popupWindow.width = ViewGroup.LayoutParams.MATCH_PARENT
popupWindow.height = ViewGroup.LayoutParams.MATCH_PARENT
// 设置点击外部是否隐藏
popupWindow.isOutsideTouchable = true
// 点击返回按钮隐藏
popupWindow.isFocusable = true
// 解决状态栏不被阴影布局覆盖问题
popupWindow.isClippingEnabled = false
// 设置显示的位置
popupWindow.showAtLocation(view, Gravity.CENTER, 0, 0)

代码效果如下:


PopupWindow应该也和上面的Theme一样,比较少人使用这两种方式来进行自定义Dialog,因为他们相较于第三种来说稍微复杂一点,而且组件的事件都需要自己重新去编写,这样一来也会耗时不少。

PopupWindow的其他属性可参考:Android Developers —— PopupWindow

Dialog

在Android中,有许多对话框都是基于Dialog实现,如AlertDialogMaterialAlertDialogBuilder等。

使用步骤:

1、创建一个布局文件

2、将Dialog进行实例化并将其展示出来

val dialog = android.app.Dialog(this)
val inflate = LayoutInflater.from(this).inflate(R.layout.dialog_viewpage, null, false)
// 设置Dialog的内容
dialog.setContentView(inflate)
dialog.show()

代码效果如下:

Android的AlertDialogMaterialAlertDialogBuilder一般已经能够满足大家的日常需求了,如果需要在这三种方式中选一种方式进行自定义,最简单便捷、性能最好的应该就属使用Dialog来进行自定义。


点击下载源码

参考文献:
1、PopUpWindow使用详解
2、Android Developers —— Dialog
3、Android Developers —— PopupWindow

以上是关于Android常用对话框大全自定义Dialog的三种方式(Theme,PopupWindow,Dialog)的主要内容,如果未能解决你的问题,请参考以下文章

Android常用对话框大全Android Dialog

Android常用对话框大全Material Dialog

Android常用对话框大全Material Dialog

浅谈android中的自定义封装易用的Dialog

Android常用DialogAndroid Dialog

(转载)Android常用的Dialog对话框用法