【问题标题】:enable user input in the activity behind the popup (custom dialog)在弹出窗口后面的活动中启用用户输入(自定义对话框)
【发布时间】:2011-11-23 12:10:48
【问题描述】:

我在我的活动上方创建了一个自定义搜索对话框,并根据输入的文本更新了结果,但是由于搜索对话框仍然出现在屏幕上,因此活动没有响应用户触摸。

我认为由于对话框,活动无法获得用户触摸事件.. 那么有没有办法启用用户触摸呢?

谢谢...

【问题讨论】:

    标签: android android-activity dialog


    【解决方案1】:

    Dialog 是作为 Dialog 主题的透明 Activity 实现的,所以不要尝试获取后屏的处理程序。取而代之的是用视图替换对话框,并改变视图 VISIBLE/INVISIBLE/GONE 的可见性

    【讨论】:

    • 实际上,我尝试从我的类的 dispatchTouch 调用 backActivity.dispatchTouchEvent(),它扩展了对话框并触摸它工作得很好。
    • @sandrstar:你能再解释一下吗?
    • @BugsHappen 意思是,创建自定义对话框类,在对话框及其内部覆盖 dispatchTouch(),只需调用活动 backActivity.dispatchTouchEvent()。这样,对话中的触摸将被转移到活动中。
    【解决方案2】:

    这里有一些有用的Window 标志

    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE 和/或 FLAG_NOT_FOCUSABLE 对于像我这样的罕见情况 - 弹出窗口中没有任何触摸

    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL 允许在后面和对话框中触摸

    您可以使用dialog.window.addFlags(..) 设置这些,或者,如果您知道自己在做什么,请使用dialog.window.setFlags(..)。 (这是 Kotlin 语法)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 2012-01-04
      相关资源
      最近更新 更多