【问题标题】:Allow outside touch for DialogFragment (Listview onitemclick not working)允许 DialogFragment 的外部触摸(Listview onitemclick 不起作用)
【发布时间】:2013-10-18 15:36:57
【问题描述】:

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

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

我在我的代码中使用了这个,但是 listview 和 gridview 的 onitemclick 没有工作,因为按钮点击工作有什么建议吗?

【问题讨论】:

  • 它为我工作。刚刚使用 setStyle(STYLE_NO_INPUT , 0);在 dialogfragment 的 oncreate 方法中:)
  • 我可以点击的外部元素,但对话框片段中的视图没有响应:(

标签: android window touch dialogfragment


【解决方案1】:

设置WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 标志而不是WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL 标志如下

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

【讨论】:

    【解决方案2】:

    我喜欢为我的很多对话框创建一个完整的 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>
    

    样式中的最后一项为您完成了所有工作。打开或关闭它以管理在“对话框”之外的点击

    【讨论】:

      猜你喜欢
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 2020-05-06
      • 2012-01-04
      相关资源
      最近更新 更多