2

ダイアログフラグメントを表示しているとき、外側の要素をクリック可能にしたい

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

私は自分のコードでこれを使用していますが、リストビューとグリッドビューのonitemclickが機能していません。

4

2 に答える 2

0

多くのダイアログ用に完全なアクティビティを作成するのが好きです。ダイアログのように見えるテーマを 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-10-18T18:05:19.793 に答える