2015-09-26 227 views
1

我想从屏幕顶部以编程方式在全屏上绘制某些内容。但是,总是有一个y轴偏移量。它似乎是身份(标题)栏的高度。Android WindowManager.LayoutParams y偏移量

这里是我的代码:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 
    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE 
        | WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      PixelFormat.TRANSLUCENT); 
    params.gravity = Gravity.LEFT | Gravity.TOP; 
    params.x = 0; 
    params.y = 0; 
    params.width = 200; 
    params.height = 300; 

    GradientDrawable gd = new GradientDrawable(); 
    gd.setShape(GradientDrawable.RECTANGLE); 
    gd.setColor(Settings.highlightColor); 
    ImageView iv = new ImageView(this); 
    iv.setImageDrawable(gd); 
    WindowManager windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); 
    windowManager.addView(iv, params); 

我已经设置全屏在AndroidManifest.xml:

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" 

这里是我的了:

Result

回答

1

使用此:

WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 
+0

它的工作原理。谢谢。 – WeiHung

+0

您现在应该将答案标记为正确。 –

0

尝试增加FLAG_TRANSLUCENT_STATUS到您的LayoutParams

paramsFlags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; 
+0

试过,但没有运气。 – WeiHung