如何使用DialogFragment 有两种方法 实现onCreateDialog方法 通过继承DialogFragment并且实现它的onCreateDialog(Bundle savedInstanceState...view = inflater.inflate(R.layout.fragment_edit_name, container); return view; } } 【注】以上两种方法创建对话框时候只能使用其中一种...,不能两个同时使用。...DialogFragment并没有对Dialog的消失提供监听给调用者使用,但是我们通过源码分析得知,DialogFragment在onActivityCreate当中其实已经帮我们设置了onDismissListener...关于消失监听的两种写法如下: mListener为提供到外部使用的回调 @Overridepublic void onDismiss(DialogInterface dialog) { super.onDismiss
[1240] DialogFragment是在3.0时引入的,是一种特殊的 Fragment,用于在 Activity 上展示一个模态的对话框。...传递数据使用了Bundle。...R.id.content_tv); titleTv.setText(title); contentTv.setText(content); } } 在onCreateView方法中,使用上文建立的...使用 把这个窗口弹出来。我们使用DialogFragment.show(@NonNull FragmentManager manager, @Nullable String tag)方法。...小结: 使用 DialogFragment 来实现弹窗。 需要确定 ui 样式,建立 layout,新建类继承DialogFragment,传入数据。 Android零基础入门教程视频参考
如果移动端访问不佳,请访问 ==> Github 版 背景 Android 官方推荐使用 DialogFragment 来代替 Dialog ,可以让它具有更高的可复用性(降低耦合)和更好的便利性..., R.style.CustomDialog); } 处理屏幕翻转 如果使用传统的 Dialog ,需要我们手动处理屏幕翻转的情况,但使用 DialogFragment 的话,则不需要我们进行任何处理,...方法 ② 则没有此问题,而且,其创建方式默认使用了自定义 View,更便于应对复杂 UI 的场景。...PS:你也可以使用静态 Handler 结合弱引用等来处理异步操作,那样对 DialogFragment 状态的获取就不重要了。...扩展阅读: 详细解读 DialogFragment Android Dialog/DialogFragment宽度高度修改/全屏,自定义样式 Full Screen DialogFragment in
普通的Fragment还是DialogFragment 同时设置不要Title跟背景 隐藏Dialog 不保留活动 显示的逻辑 推荐使用DialogFragment 要选android X下的DialogFragment...DialogFragment有两个不同的包名 androidx.fragment.app.DialogFragment android.app.DialogFragment 为了兼容各个Android...版本的,记得要选择第一种DialogFragment,当然,系统源码也很贴心的把它Framework的DialogFragment设置为不推荐使用,而且还注明让你使用support包下面的DialogFragment...()方法来展示 DialogFragment如果只是当做普通的Fragment,建议使用普通的Fragment就可以了,这样代码逻辑比较清晰 同时设置不要Title跟背景 想同时不要Title跟背景,...DialogFragment 建议展示Dialog的地方,统一使用DialogFragment,更好的处理生命周期的各种场景,而且在Fragment回收后,也可以自动帮我们关闭Dialog,避免逻辑异常
这里是对DialogFragment扩展的主要部分,我们可以再这里定义自己的方法,定义事件等。不如诗listdialog,需要定义适配器,需要定义itemclick。...1 public class TextDialogFramnet extends DialogFragment { 2 3 int mNum; 4 5 static...case 3: 26 style = DialogFragment.STYLE_NO_INPUT; 27 break; 28 case...4: 29 style = DialogFragment.STYLE_NORMAL; 30 break; 31 case 5:...= DialogFragment.STYLE_NO_FRAME; 39 break; 40 case 8: 41 style =
在DialogFragment未哇哇坠地之前,我们一般用AlertDialog和Dialog来创建对话框。现在,谷歌官方不建议直接使用Dialog创建对话框。...因此它便于Activity更好的控制管理DialogFragment 相比Dialog,DialogFragment能完美横竖屏幕切换的问题。...onCreateView即使用定义的xml布局文件展示Dialog。onCreateDialog即利用AlertDialog或者Dialog创建出Dialog。...另一个则是使用inflater加载刚才自己新建的布局。...这样方便管理,例如你需要对话框一直处于栈顶,那么你就要使用FragmentTransaction结合newInstance()来控制。 c、显示对话框 ?
1、DialogFragment 的优点 其实在 Android 中显示对话框有两种类型可供使用,一种是 DialogFragment,而另一种则是 Dialog。...在 DialogFragment 产生之前,我们创建对话框一般采用 Dialog,而且从代码的编写角度来看,Dialog 使用起来其实更加简单,但是 Google 却是推荐尽量使用 DialogFragment...基本一样的生命周期,使用 DialogFragment 来管理对话框,当旋转屏幕和按下后退键的时候可以更好的管理其生命周期 在手机配置变化导致 Activity 需要重新创建时,例如旋转屏幕,基于 DialogFragment...的对话框将会由 FragmentManager 自动重建,然而基于 Dialog 实现的对话框却没有这样的能力 2、DialogFragment 的使用 使用 DialogFragment 至少需要实现...AlertDialog 或者 Dialog 创建出 我们想要的 Dialog,因为这篇文章主要是讲 DialogFragment 的封装,至于 DialogFragment 具体的使用,可以参考下洋神的这篇文章
一、问题 DialogFragment 偶现IllegalStateException: Can not perform this action after onSaveInstanceState。...一般的解决方法,使用commitAllowingStateLoss 替代 commit,但DialogFragment的show方法默认使用的commit,无法修改 二、解决方案 public class...AllowStateLossDialogFragment extends DialogFragment { @Override public void show(@NonNull FragmentManager
使用总结 做一些业务,但是目标却是用 DialogFragment 实现类似 PopupWindow 效果: 只拦截自身所占空间部分的事件,其余空间的点击事件不处理 可以根据某个 View 定位自身位置...虽然在功能上 PopupWindow 更符合需要,但是使用 DialogFragment 代码更简洁、更方便封装功能模块。...但是,如果在界面显示给用户后,DialogFragment 的显示交给用户触发的话,就不需要在意这个问题了。...效果图 未使用沉浸式状态栏、 isTranslucentDecor 传值为 false ? 使用沉浸式状态栏、 isTranslucentDecor 传值为 false ,位置定位差个状态栏高度 ?...使用沉浸式状态栏、 isTranslucentDecor 传值为 true,位置定位修复 ?
在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。...2、 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。...上面会通过例子展示这些好处~ 使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。...4、 重写onCreateDialog创建Dialog 在onCreateDialog中一般可以使用AlertDialog或者Dialog创建对话框,不过既然google不推荐直接使用Dialog,我们就使用...可以看到,传统的Dialog旋转屏幕时就消失了,且后台log会报异常~~~使用DialogFragment则不受影响。 好了,关于DialogFragment的介绍结束~~~~ 源码点击下载
由于 Window 的 decorView 默认是设置有 10dp 的padding。需要获取到decorView后设置其padding为(0, 0, 0, 0...
DialogFragment隐藏导航栏 在 Android 中,使用 DialogFragment 显示对话框时,如果您希望隐藏系统导航栏(如状态栏和导航键),可以通过设置相关的系统 UI 标志来实现。...以下是一个完整的例子,展示了如何在 DialogFragment 中隐藏系统导航栏(使用 Kotlin): import android.os.Bundle import android.view.View...-- Your layout content goes here --> 使用 DialogFragment 要显示这个 DialogFragment,可以在活动或其他片段中调用以下代码...let { … }: 为了确保 window 不为 null,使用 Kotlin 的安全调用操作符 ?. 来使用窗口对象。 setLayout 方法将对话框设置为全屏。...如果需要在更多场景下多次使用该样式,可以进一步将其封装或抽取为一个通用组件。
在 Android 开发中,当你使用 Dialog 或 DialogFragment 时,可以通过设置 Window 的背景变暗来突出它的可见性。这个效果是通过 dimAmount 属性来控制的。...DialogFragment 假设你正在使用 DialogFragment,那么你可以在 onCreateDialog 或 onViewCreated 方法中配置 Dialog 的窗口属性。...在 DialogFragment 中设置 dimAmount public class MyDialogFragment extends DialogFragment { @Override...使用的是布局文件,需要在onViewCreated中调用上面的代码 @Override public void onViewCreated(@NonNull View view, @Nullable...Dialog 在 Dialog 中设置 dimAmount 如果你直接使用 Dialog 而不是 DialogFragment,你可以在创建 Dialog 时设置 dimAmount: Dialog dialog
hideSoftInputFromWindow(binding.etChat.windowToken, 0) } 复制代码 在DialogFragment显示时弹出软键盘 在DialogFragment...消失时关闭软键盘 dialog关闭分为几种情况,处理方式不一样: 1.用户手动调用DialogFragment.dismiss() 这时可以重写dismiss方法,在调用之前关闭软键盘。...自定义Dialog在dismiss之前通知 DialogFragment 关闭软键盘 转变思路,既然在 DialogFragment 中无法提前监听dialog关闭,那就自定义Dialog重写dismiss...方法,在Dialog关闭之前告知 DialogFragment 关闭软键盘 class EditDialog(context: Context?...最后,还有一种方式就是使用全屏dialog,在原先空白区域加一个透明的View,设置view的点击事件去关闭软键盘和弹窗,这样就避免了点击空白处关闭的问题。
针对DialogFragment的实现方式 Android比较推荐采用DialogFragment实现对话框,它完全能够实现Dialog的所有需求,并且还能复用Fragment的生命周期管理,被后台杀死后还能自动恢复...其实现全屏的原理同Dialog一样,只不过是时机的把握 public class FullScreen DialogFragment extends DialogFragment { @Nullable...(推荐使用DialogFragment,它复用了Fragment的声明周期,被杀死后,可以恢复重建) public class FragmentFullScreen extends DialogFragment...DecorView及rootView的设置,在上面的基础上有两点需要处理,一是:内容区域延展上去;二是:状态栏变成透明(不透明你也看不见啊),如何延展内容区域,参考全屏、沉浸式、fitSystemWindow使用及原理分析...21526023112_.pic.jpg 作者:看书的小蜗牛 原文链接: 三句代码创建全屏Dialog或者DialogFragment:带你从源码角度实现 仅供参考,欢迎指正
2 实现弹框: 因为后来谷歌推荐使用的DialogFragment,所以我们此处弹框也是使DialogFragment。...我们一步步来看如何使用DialogFragment来实现我们想要的弹框: 我们按照上面的布局写了具体的弹框布局代码 fragment_ios_dialog.xml: ?...在这里,我们先假设中间的菜单ListView的高度写成50dp,主要是先来看效果,实际使用的时候可以写成wrap_content,根据传入的item数量决定高度。...再继承DialogFragment来实现我们的IOSDialogFragment: IOSDialogFragment.java: ?...所以消失的时候我们不能单纯的让DialogFragment执行dismiss(),而是先让弹框执行下移的动画效果,然后再dismiss()。
这里使用的SDK为AMap_Location_V2.5.0_20160526.jar 没有接触过高德地图的同学,请参考 加载一张高德地图 1.获取我的位置 package com.pansoft.oilgas.gaodenavigation...不是,是Android6.0中将用户权限分为普通权限和危险权限,这里定位权限属于危险权限,需要在使用的时候进行动态申请。...super.onRequestPermissionsResult(requestCode, permissions, grantResults); } 3.展示获取到的位置数据 定义一个DialogFragment...展示数据,不熟悉DialogFragment的同学请参考 AltertDialog在DialogFragment中的使用 package com.pansoft.oilgas.gaodenavigation...; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import
这里,如果在异步数据完成加载之后,旋转屏幕,使用上述a、b两种方法都不会很难,无非是保存数据和恢复数据。...c)谷歌的官方不建议使用ProgressDialog,这里我们会使用官方推荐的DialogFragment来创建我的加载框,如果你不了解:请看 Android 官方推荐 : DialogFragment...这样,其实给我们带来一个很大的问题,DialogFragment说白了是Fragment,和当前的Activity的生命周期会发生绑定,我们旋转屏幕会造成Activity的销毁,当然也会对DialogFragment...下面我将使用几个例子,分别使用上面的3种方式,和如何最好的解决上述的问题。...并且,使用系统提供的onSaveIntanceState()的回调中,使用Bundle来完全恢复你Activity的状态是可能是不现实的(Bundle不是设计用来携带大量数据的(例如bitmap),并且
然而,有朋友在GitHub上对这种方案提出了疑问,因为他想要使用DialogFragment来自定义权限提醒对话框,PermissionX的限制导致他只能使用Dialog了。 ?...DialogFragment也是Google推荐使用的一种对话框实现方案,虽然我认为DialogFragment能实现的功能用Dialog也都能实现,但是强制使用Dialog确实显得有那么一些不友好。...虽然上述方案是否定了,但是对于DialogFragment的需求却是实实在在存在的。...所以最终我采取了和之前一样的方式,增加了一个RationaleDialogFragment的类,该类是继承自DialogFragment的,里面也定义了PermissionX所要求的几个必要的方法,开发者在使用...DialogFragment自定义对话框时同样将这几个必要的方法进行实现即可。
,对于 DialogFragment 不是很了解,可以先看看我这篇文章 Android 撸起袖子,自己封装 DialogFragment。...public class RecordAudioDialogFragment extends DialogFragment { private boolean mStartRecording...public static RecordAudioDialogFragment newInstance(int maxTime) { RecordAudioDialogFragment dialogFragment...(bundle); return dialogFragment; } @NonNull @Override public Dialog onCreateDialog...点击这里,喜欢的话,欢迎来波 star 和 fork ---- 猜你喜欢 Android 一起来看看知乎开源的图片选择库 Android 能让你少走弯路的干货整理 Android 撸起袖子,自己封装 DialogFragment
领取专属 10元无门槛券
手把手带您无忧上云