我的应用程序中有一个 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/