android - 允许 DialogFragment 的外部触摸

标签 android android-dialogfragment

我的应用程序中有一个 Fragment,它显示了一个 DialogFragment
我在 fragment 中有一个关闭对话框的按钮。但是当我显示 dialogFragment 时,对话框外部的触摸什么都不做,我无法单击对话框 fragment 外部的按钮。

如何允许 DialogFragment 的外部触摸?

最佳答案

为了做到这一点,应该打开允许外部触摸的 Window 标志,并且为了良好的外观,应该清除背景暗淡标志。
因为它必须在创建对话框后完成,所以我通过 Handler 实现了它。

@Override
public void onViewCreated(final View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    // This is done in a post() since the dialog must be drawn before locating.
    getView().post(new Runnable() {

        @Override
        public void run() {

            Window dialogWindow = getDialog().getWindow();

            // Make the dialog possible to be outside touch
            dialogWindow.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
            dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

            getView().invalidate();
        }
    });
}

此时可以进行外部触摸。

如果我们想让它更好看并且没有框架,可以添加以下代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Hide title of the dialog
    setStyle(STYLE_NO_FRAME, 0);
}

关于android - 允许 DialogFragment 的外部触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15382540/

相关文章:

android - 错误 : could not find com. google.gms :google-services:4. 2.0

Android - ListView 不刷新

android - 现有项目中的错误 - XML 文档结构必须在同一实体内开始和结束

android - 如何将 TimeUnit 转换为秒或小时?

java - 从 Activity 启动 DialogFragment

android - 如何防止自定义 DialogFragment 在显示时隐藏键盘

java - 对话框在主 Activity 中触发非静态方法

java - 为什么 DialogFragment.dismiss 不立即终止对话框?

Android 切换 textOn/Off 防止从 Talkback 读取

iphone - 使用 XMLVM 将 android 应用程序转换为 iphone 应用程序