【问题标题】:Showing a Dialog and still delivering clicks to the background?显示一个对话框并仍然向后台传递点击?
【发布时间】:2012-05-10 15:28:48
【问题描述】:

我想在当前用户活动的顶部显示一个小的自定义对话框,但将点击我的对话框之外的区域传递到后台(可能是启动器或其他活动)。我试图创建一个透明的基础活动并在其顶部显示对话框,但点击是在透明活动上注册的,而不是在它后面的任何东西上......

我知道Popup 有一个setOutsideTouchable-Method,但据我所知,将此设置为 true 只会关闭弹出窗口,而不是将点击传递到后台...

感谢您的帮助,
尼克

【问题讨论】:

  • 您是否考虑过在 FrameLayout 中构建您的 Activity,以便所有内容都堆积在其余部分之上?然后你可以在闲暇时显示/删除你的弹出窗口?
  • 感谢您的回复!如果这只是我的活动,那将是一个好主意,但我希望从服务中显示弹出窗口,而不会阻止用户按下其他地方(在我的弹出窗口之外),以使其尽可能不引人注目。不幸的是,我不能为这个特定任务使用Toast 或标准Notification:-/
  • @Nick,你找到解决办法了吗?

标签: android


【解决方案1】:

根据您在另一个答案上发布的澄清评论...

“我希望对话框在系统范围内显示,无论用户当前使用的是哪个应用程序......”

我不相信你想做的事是可能的,我很高兴。 :) 如果您被允许在其他人的应用程序上弹出一个小对话框并且仍然让用户能够与当前活动进行交互......那么您可以轻松欺骗用户认为这个小弹出窗口属于当前应用程序而不是你的,它是在后台执行的。

想象一下你可以用这样的东西做的所有坏事。当用户在 Email.app 中时提示用户重新输入他们的电子邮件密码......然后将其存储用于恶意目的等。

这是不可能的……也不应该是可能的。如果您需要通知用户某事,那么您应该使用内置的通知系统。这就是为什么它在那里! :)

【讨论】:

    【解决方案2】:

    您可以使用 PopupWindow“类似对话框”并在您的活动顶部向用户显示它。外部事件将被传递到主 Activity。

    【讨论】:

    • 你能解释一下这个答案吗?例如,我可以在来电窗口顶部打开弹出窗口吗?
    【解决方案3】:

    我看不出通过执行您的要求来利用给定的 android 可用性模式的更深层次的含义?

    建议并有意义地坚持常用模式,这样用户就不必适应基本的应用程序。也就是说,除非您正在开发游戏:)

    【讨论】:

      【解决方案4】:

      "我希望显示对话框 系统范围内,无论哪个 App 用户正在使用..."

      这就是通知系统的用途。它允许您向用户讲述一些事情,而不会打断他正在做的任何事情。

      系统范围的对话框弹出是邪恶的,很高兴没有在 Android 中实现。

      使用通知系统:http://developer.android.com/reference/android/app/Notification.html

      此外,如果您的应用程序上方只有一个对话框是可以的,那么让 UI 在对话框启动时仍然响应的最简单方法就是在相对布局视图中重新创建一个对话框并显示它而不是常见的模态对话框。

      【讨论】:

        【解决方案5】:

        您可以切换位置,使弹出窗口实际上位于初始屏幕“后面”,然后将初始屏幕设置为透明。

        编辑:这当然只适用于应用程序。

        【讨论】:

        • 这是一个很酷的想法,如果我只是处理我自己的应用程序,它会起作用,但我希望对话框在系统范围内显示,无论用户目前使用的是哪个应用程序。 ..
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多