java - 使用 WindowManager 覆盖页脚

标签 java android mobile overlay window-managers

我正在尝试使用 WindowManager 覆盖屏幕,它运行良好,但覆盖屏幕不会覆盖页脚,而是覆盖标题。 screenshot

这是我的代码。

wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

        overlayView_bg = new View(getApplicationContext());
        // making service view fullscreen
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | 
                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | 
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH ,
                PixelFormat.TRANSLUCENT);
        wm.addView(overlayView_bg, params);

请帮我处理重叠页脚。 谢谢!

最佳答案

我自己找到了解决方案。

        int navigationHeight = 0, statusHeight = 0;
        Resources resources = getApplicationContext().getResources();
        int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
        if (resourceId > 0) {
            navigationHeight= resources.getDimensionPixelSize(resourceId);
        }
        resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            statusHeight = resources.getDimensionPixelSize(resourceId);
        }
        DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics();
        float dpHeight = displayMetrics.heightPixels ;

        // making service view fullscreen
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                -1,(int)(dpHeight + navigationHeight + statusHeight),0,-navigationHeight,
                LAYOUT_FLAG,
                WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | 
                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | 
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | 
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
                WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR| 
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                PixelFormat.TRANSLUCENT);
        params.gravity = Gravity.BOTTOM | Gravity.LEFT;
        wm.addView(overlayView_bg, params);

运行良好。

关于java - 使用 WindowManager 覆盖页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58494801/

相关文章:

java - 使用 gremlin 语法时对 Amazon neptune 有任何限制吗?

android - 线程游戏 “event loop”中的Actor/消息传递

php - 通知网络服务如果应用程序关闭

java - Oracle ADF 选择多行时,RowSetIterator 在第一次方法调用时不会填充

java - Android:读取文本文件并抓取特定单词后面的行

java - httpTransport.call(SOAP_ACTION,信封);引发null异常Android

ios - 如何使用电话链接在IOS 6 7 8中调用2位电话号码

javascript - 在手机上滚动时隐藏 URL 栏困惑 '100% height'

javascript - iDevice浏览器,更改选择菜单内容

Java、JDBC连接池、JDBC连接回滚