Problem mit LayoutParams und DisplayMetrics / params.y

  • Antworten:0
Markus
  • Forum-Beiträge: 3

30.06.2014, 14:48:13 via Website

Hallo,

ich arbeite seit längerem an einem chat Head. Das Problem, an welchem ich nun seit längerem festhänge, besteht in der Positionierung des Heads nach dem Loslassen.
Wenn man sich beispielsweise den Facebook-chat Head anschaut, wird dieser an eine Seite des Bildschirms gezogen.

Mein Problem:
Ich habe mittels DisplayMetrics().getHeight() die Höhe meines Bildschirms berechnet (auch die density habe ich beachtet).
Dort passt auch alles, das ergebnis ist 480 (was sogar der Auflösung entsprechen würde). Die ActionBar habe ich danach abgezogen sowie die Höhe des chat Heads. Mit folgendem Code müsste der chat Head eigentlich am Boden des Bildschirms ankommen:

WindowManager.Layout Params params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.TYPE_PHONE,
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT);

    //Höhe der ActionBar
    TypedValue tv = new TypedValue();
    getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
    int actionBarHeight = getResources().getDimensionPixelSize(tv.resourceId);

 params.gravity = Gravity.TOP | Gravity.LEFT;
    params.x = 50;
    params.y = getResources().getDisplayMetrics.getHeight() - chatHead.getHeight() - actionBarHeight; //density ist 1, deshalb hier in der Berechnung draußen //params.y = 480 - (müsste 30 sein) - 48;

    windowManager.addView(chatHead, params);

Problem: Das Ding kommt am Boden an, aber die maximale params.y ist anscheinend 400 (durch ausprobieren herausgefunden). Bei dem Code oben (bei params.y) könnte man sogar noch -40 hinschreiben und das Ding würde noch da fest stecken, müsste aber eigentlich schon wieder 40 Pixel vom Boden entfernt sein.

Nachdem das anscheinend nichts mit der density zu tun hat, hat irgendwer eine Idee oder ähnliche Erfahrungen gemacht?
Viele Grüße und einen guten Start in die Woche,
Markus

— geändert am 30.06.2014, 16:16:17

Antworten