在活动顶部创建一个透明对话框

android开发人员

背景

我正在尝试在当前活动之上放置一层,以解释当前屏幕上正在发生的事情,类似于contact + app上发生的事情

我知道有一些解决方案(例如showCase库和superToolTips库),我也知道可以通过将其添加到活动窗口中来创建视图并将其设置在顶部,但是我需要放置一个整体对话框层位于顶部。

问题

无论我尝试什么,每种解决方案都无法按我需要的方式工作。

简而言之,我需要的是:

  • 全屏对话框。

  • 动作栏,通知栏和后面活动的内容没有任何变化(视觉上和逻辑上没有变化),这意味着对话框后面的所有内容与显示对话框之前显示的内容保持不变。

  • 除了我用于对话框的视图(应该正常显示)以外,其他视图都是透明的。

我尝试过的

可悲的是,我总是只得到我需要的东西的一部分。

这是我的代码:

styles.xml:

<style name="full_screen_dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    </style>

MainActivity.java:

...
final Dialog dialog = new Dialog(this, R.style.full_screen_dialog);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.floating_tutorial);
dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
dialog.getWindow().setFormat(PixelFormat.TRANSLUCENT);
dialog.show();

这段代码会将布局放在活动的顶部,但是遗憾的是,即使我已经设置了透明度,它也没有任何透明度。我使用的布局非常简单,这就是为什么我不发布它的原因。

问题

我想念什么?应该怎么做才能修复代码?

如何使对话框既透明又全屏,并且不会更改操作栏和通知栏。


工作方案

编辑:找到一个好的解决方案后,这是工作代码:

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Dialog dialog = new Dialog(this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.floating_tutorial);
    final Window window = dialog.getWindow();
    window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
    window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
    window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    dialog.show();
}
史蒂夫·贝内特(Steve Benett)

只需更改对话框的背景颜色即可:

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

编辑:

这样可以防止变暗的效果:

dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在活动顶部创建一个透明对话框

来自分类Dev

第一个活动中显示的对话框,而不是创建片段的对话框

来自分类Dev

如何创建一个无边框对话框?

来自分类Dev

在页面内创建一个小对话框

来自分类Dev

如何在Android 4.4.2中的另一个对话框活动上显示对话框活动?

来自分类Dev

在另一个模态JFace对话框顶部打开模态JFace对话框

来自分类Dev

在另一个模态JFace对话框顶部打开模态JFace对话框

来自分类Dev

在另一个对话框上创建对话框

来自分类Dev

返回上一个活动,在android中有一个对话框

来自分类Dev

返回上一个活动,在android中有一个对话框

来自分类Dev

两个活动的一个自定义警报对话框

来自分类Dev

将对话框从一个活动传递到另一个活动

来自分类Dev

一段时间不活动后显示一个对话框

来自分类Dev

视频未开始播放时,启动一个对话框以支持主要活动

来自分类Dev

在一个活动中实现多个警报对话框的最佳方法

来自分类Dev

在显示为对话框的活动上方添加一个向上按钮

来自分类Dev

将值传递给从另一个活动运行的对话框

来自分类Dev

如何在另一个活动中打开警报对话框

来自分类Dev

如何使用Winapi创建一个对话框来选择多个文件?

来自分类Dev

如何创建一个显示当前网页截图的打印对话框

来自分类Dev

如何创建一个包含下拉列表的HTML对话框?

来自分类Dev

在“ KDE另存为”对话框中创建一个新目录

来自分类Dev

无法在另一个内部创建Qt对话框

来自分类Dev

XPages:如何创建一个带有回调到调用方的对话框

来自分类Dev

我需要创建一个打开自定义对话框的按钮

来自分类Dev

我有一个警报对话框,并使用setSingleChoiceItems设置所选项目,但想从顶部显示列表

来自分类Dev

KivyMD // Python如何创建一个加载对话框(弹出窗口),该对话框在后台运行代码的同时显示一个旋转的轮子

来自分类Dev

关闭对话框并打开另一个对话框

来自分类Dev

验证失败时,显示的PrimeFaces对话框很少,而不是一个对话框

Related 相关文章

  1. 1

    在活动顶部创建一个透明对话框

  2. 2

    第一个活动中显示的对话框,而不是创建片段的对话框

  3. 3

    如何创建一个无边框对话框?

  4. 4

    在页面内创建一个小对话框

  5. 5

    如何在Android 4.4.2中的另一个对话框活动上显示对话框活动?

  6. 6

    在另一个模态JFace对话框顶部打开模态JFace对话框

  7. 7

    在另一个模态JFace对话框顶部打开模态JFace对话框

  8. 8

    在另一个对话框上创建对话框

  9. 9

    返回上一个活动,在android中有一个对话框

  10. 10

    返回上一个活动,在android中有一个对话框

  11. 11

    两个活动的一个自定义警报对话框

  12. 12

    将对话框从一个活动传递到另一个活动

  13. 13

    一段时间不活动后显示一个对话框

  14. 14

    视频未开始播放时,启动一个对话框以支持主要活动

  15. 15

    在一个活动中实现多个警报对话框的最佳方法

  16. 16

    在显示为对话框的活动上方添加一个向上按钮

  17. 17

    将值传递给从另一个活动运行的对话框

  18. 18

    如何在另一个活动中打开警报对话框

  19. 19

    如何使用Winapi创建一个对话框来选择多个文件?

  20. 20

    如何创建一个显示当前网页截图的打印对话框

  21. 21

    如何创建一个包含下拉列表的HTML对话框?

  22. 22

    在“ KDE另存为”对话框中创建一个新目录

  23. 23

    无法在另一个内部创建Qt对话框

  24. 24

    XPages:如何创建一个带有回调到调用方的对话框

  25. 25

    我需要创建一个打开自定义对话框的按钮

  26. 26

    我有一个警报对话框,并使用setSingleChoiceItems设置所选项目,但想从顶部显示列表

  27. 27

    KivyMD // Python如何创建一个加载对话框(弹出窗口),该对话框在后台运行代码的同时显示一个旋转的轮子

  28. 28

    关闭对话框并打开另一个对话框

  29. 29

    验证失败时,显示的PrimeFaces对话框很少,而不是一个对话框

热门标签

归档