允许外部触摸DialogFragment(Listview onitemclick无法正常工作)

时间:2013-10-18 15:36:58

标签: android window touch dialogfragment

当我显示对话框片段时,我希望外部元素可以点击

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


    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();
        }
    });
}

我在我的代码中使用了这个但是listite和gridview的onitemclick不能正常工作,因为按钮点击工作任何建议吗?

2 个答案:

答案 0 :(得分:1)

WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE标志设置为WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL标志,如下所示

window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);

答案 1 :(得分:0)

我喜欢为很多对话框创建一个完整的Activity。为Activity提供一个使其看起来像对话框的主题非常简单。在我的清单中,我列出了我的活动:

  <activity
        android:name=".UserLogin"
        android:noHistory="true"
        android:screenOrientation="sensorLandscape"
        android:theme="@style/ActivityDialog"
        android:windowSoftInputMode="adjustPan" >
  </activity>

在我的styles.xml中,我将主题定义为:

  <style name="ActivityDialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@null</item>
    <item name="android:backgroundDimEnabled">false</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowCloseOnTouchOutside">true</item>
  </style>

风格中的最后一项为您完成所有操作。打开或关闭它以管理“对话框”外的点击