在 Android 导航栏顶部绘制位图

sas*_*ash 4 android overlay navigationbar viewgroup

在我的应用程序中,我需要在所有正在运行的应用程序之上绘制一个位图。我创建了一个不可见的视图,并覆盖在所有应用程序之上。使用此叠加视图,我可以在给定位置绘制位图,但无法在导航栏顶部绘制位图。我使用了以下布局参数。

    WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
    WindowManager.LayoutParams.FLAG_FULLSCREEN
    |WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
    |WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
    |WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR 
    |WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
Run Code Online (Sandbox Code Playgroud)

我需要帮助来解决这个问题。提前致谢

sas*_*ash 5

我自己解决了这个问题,要在 android 底部的导航栏顶部绘制,我必须在定义 windowManager.Layout 参数时在 Y 位置给出一个偏移量,如下所示。

w = new android.view.WindowManager.LayoutParams(-1, -1,0,-navigationBarHeight(),    WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
    WindowManager.LayoutParams.FLAG_FULLSCREEN
    |WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
    |WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
    |WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR 
    |WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, Pixel.Translucent);
    f.addView(v, w);
Run Code Online (Sandbox Code Playgroud)

注意:这只在导航栏半透明时有效