WeiHung
WeiHung

Reputation: 109

Android WindowManager.LayoutParams y offset

I want to draw something on full screen programmatically from top of the screen. However, there is always a y axis offset. It seems the height of status (title) bar.

Here is my code:

@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);

I already set full screen in AndroidManifest.xml:

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

Here is what I got:

Result

Upvotes: 1

Views: 2795

Answers (2)

Alex Newman
Alex Newman

Reputation: 1397

Use this:

WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

Upvotes: 2

maciekjanusz
maciekjanusz

Reputation: 4775

Try adding FLAG_TRANSLUCENT_STATUS to your LayoutParams:

paramsFlags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;

Upvotes: 0

Related Questions