在Android的导航栏顶部绘制位图

时间:2014-01-27 11:52:36

标签: 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,

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

1 个答案:

答案 0 :(得分:4)

我自己已经解决了这个问题,要在android底部的导航栏上绘制,我必须在定义windowManager.Layout params时在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);

注意:这仅在导航栏为半透明时才有效