android - 无法在 WindowManager 中调用 onClickListener

标签 android overlay android-service

我正在我的服务类中实现windowManager

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

我在我的窗口管理器中添加了一个 View ,但该 View 的点击监听器不工作。

    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;

我希望点击监听器正常工作,但它不工作,所以请在这方面帮助我。

最佳答案

您好,经过长时间的研究,我找到了这段代码。这应该工作。试试 。在创建服务类时添加此行。以下内容是我们应该传递的参数 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);

关于android - 无法在 WindowManager 中调用 onClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15064657/

相关文章:

java - 非常大的数字选择器

android - 如何在 Flutter SharedPreferences 中访问 iOS UserDefaults 存储的数据

iOS AVFoundation - 在视频上显示时间并导出

Android Map Performance poor because of many Overlays?

events - 为 Google map 上的多个形状创建 addListener 点击事件

android - 如何在 Android 上将 socket.io 作为连续服务运行而无需 sleep 或暂停?

java - 如何制作与图像形状完全相同的自定义形状 View

java - Android Studio 加载多张图片时如何防止延迟

Android:如何避免 Activity 被系统杀死,ActivityManager:处理我的包名称(pid 935)已死亡

android - 从 Activity 的 onCreate 检测服务可用性