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
实现,如AlertDialog
、MaterialAlertDialogBuilder
等。
使用步骤:
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的AlertDialog
、MaterialAlertDialogBuilder
一般已经能够满足大家的日常需求了,如果需要在这三种方式中选一种方式进行自定义,最简单便捷、性能最好的应该就属使用Dialog
来进行自定义。
参考文献:
1、PopUpWindow使用详解
2、Android Developers —— Dialog
3、Android Developers —— PopupWindow
以上是关于Android常用对话框大全自定义Dialog的三种方式(Theme,PopupWindow,Dialog)的主要内容,如果未能解决你的问题,请参考以下文章