4

サービスクラスにwindowManagerを実装しています

WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    wm.addView(mView, params);

ウィンドウマネージャーにビューを追加しましたが、そのビューのクリックリスナーが機能していません。

    mView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(getBaseContext(),"onClick",     Toast.LENGTH_LONG).show();
        }
    });

レイアウトパラメータは次のとおりです。

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(130,130);
    params.type=WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
    params.flags=WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
    params.format=PixelFormat.TRANSPARENT;

クリックリスナーを正しく動作させたいのですが、動作しないので、この点で助けてください。

4

2 に答える 2

7

こんにちは長い調査の後、私はこのコードを見つけました。これはうまくいくはずです。試してみてください。この行をサービスクラスの作成時に追加します。以下の内容は、FLAG_WATCH_OUTSIDE_TOUCHおよびすべてに渡す必要のあるパラメーターです。これがお役に立てば幸いです。

WindowManager.LayoutParams params = new WindowManager.LayoutParams(100, 100, 2007, 8, -3);
        Button bb=new Button(this);
        bb.setText("Button");
        bb.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                System.out.println("Clicked----><<<<<<<");
            }
        });

        bb.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                System.out.println("Touched =----- > ");
                return false;
            }
        });

        params.gravity = Gravity.RIGHT | Gravity.TOP;
        params.setTitle("Load Average");
        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);        
        wm.addView(bb, params);
于 2013-02-25T10:51:08.177 に答える
1

私にとって、私はこれを使用していました:

WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;

そして私は、Android 4.0以降、セキュリティ上の理由から、このフラグがウィンドウマネージャーのクリックを防ぐことを発見しました。

于 2015-09-20T12:18:41.103 に答える