0

これが私の問題です。ボタンがクリックされたときに表示される PopupWindow があります。setOutsideTouchable(true)ユーザーが PopupWindow の外側をクリックすると、PopupWindow が閉じられるように追加しました。

ここで、ポップアップが表示されているときにボタンをクリックすると、ポップアップが閉じられ、再び表示されます(実際にすべきことは、ポップアップを閉じるだけです)。ボタンをクリックすると外側( )としてカウントされるため、ポップアップが消えました。onclickのsetOutsideTouchable(true)コードがそう言ったので、再び表示されます。

とにかく、PopupWindow の境界内にボタンを含めることができるので、クリックしても閉じられませんか?

どうもありがとう。助けに感謝します。}

4

1 に答える 1

0

宣言

private LayoutInflater inflater;
private PopupWindow pw;
private View popupView

oncreate メソッドで

inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
popupView = inflater.inflate(R.layout.menu_layout, null, false);

ボタンの onclick メソッド

public void showPopup(View view) {
    pw = new PopupWindow(getApplicationContext());
    pw.setTouchable(true);
    pw.setFocusable(true);
    pw.setOutsideTouchable(true);
    pw.setTouchInterceptor(new OnTouchListener() {
       public boolean onTouch(View v, MotionEvent event) {
           if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                pw.dismiss();

                return true;
            }

            return false;
        }
    });

    pw.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
    pw.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
    pw.setOutsideTouchable(false);
    pw.setContentView(popupView);
    pw.showAsDropDown(view, 0, 0);

}

これは、同じものを実装するために使用するコードです。

サンプルコードはこちら

于 2012-09-04T05:23:22.327 に答える