Android - PopupWindow вышэй пэўнага гледжання

Я займаюся распрацоўкай прыкладанняў для Android, і я выкарыстоўваю ўсплывальнае акно, калі карыстальнік пстрыкае пэўны аб'ект Радкі меню (які складаецца з маленькіх малюнкаў выбудаваныя па гарызанталі) у ніжняй частцы экрана.

На пстрычцы я хачу ўсплывальнае акно прывязвацца да верхняга левым куце гледжання, якая была націснутая і быць паказанай на вяршыні.

Адзіныя метады, якія здаюцца важнымі з'яўляюцца showAsDropDown (Прагляд анкер, унутр XOFF, унутр Yoff) і showAtLocation (Паказаць бацькоўскі, унутр гравітацыя, Int х, унутр у) . Праблема з showAsDropDown тым, што яна прымацаваная да ніжняга левым куце прадстаўлення.

Ёсць яшчэ адзін спосаб ажыццявіць гэта?

18

7 адказы

popupWindow.showAtLocation(...) actually shows the window absolutely positioned on the screen (not even the application). The anchor in that call is only used for its window token. The coordinates are offsets from the given gravity.

Тое, што вы на самай справе хочаце выкарыстоўваць:

popupWindow.showAsDropDown(anchor, offsetX, offsetY, gravity);

Гэты выклік даступны толькі ў API 19+, так і ў больш ранніх версіях вам трэба выкарыстоўваць:

popupWindow.showAsDropdown(anchor, offsetX, offsetY);

Гэтыя выклікі паказваюць ўсплывальнае акно адносна названай пункту гледжання якарнай. Звярніце ўвагу, што сіла цяжару па змаўчанні (пры выкліку без названай цяжкасці) з'яўляецца Gravity.TOP | Gravity.START так што калі вы яўна з дапамогай Gravity.LEFT у розных месцах у вашым дадатку вы будзе мець дрэнны час :)

31
дададзена
Гэта адзін я шукаў. Усё, што вам трэба разлічыць гэта зрушэнне ў залежнасці ад элемента карыстацкага інтэрфейсу вы карыстаецеся ..
дададзена аўтар Alpaslan, крыніца
popupWindow.showAtLocation(anchor, Gravity.BOTTOM, 0, anchor.getHeight());
7
дададзена

Адзін вы хочаце выкарыстоўваць showAtLocation (...) . Неабходна ўказаць выгляд якара (адзін карыстальнік пстрыкае), і становішча яго адносна, што праз цяжар параметр і зрушэнне. Падумайце аб цяжару параметр як PopupWindow амаль як выгляд дзіцяці і бацькоўскі выгляд, як макет кантэйнера.

Вы павінны быць у стане паставіць Gravity.LEFT | Gravity.TOP у якасці параметру.

5
дададзена
Няма такога поспеху, то PopupWindow пакажа верхні левы кут вокны з гэтай лініяй (popupWindow.showAsLocation (якар, Gravity.TOP | Gravity.LEFT, 0, 0)).
дададзена аўтар user153275, крыніца

I have this code: PopupWindow below a specific view (Gravity End) for all sdk version.

       //display the popup[![enter image description here][1]][1]
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            mPopupWindow.showAsDropDown(v, 0, 0, Gravity.END);
        } else {
            mPopupWindow.showAsDropDown(v, v.getWidth() - mPopupWindow.getWidth(), 0);
        }

Тут View v з'яўляецца ImageButton каляндар.

3
дададзена

Вам проста трэба, каб перанесьці popupWindow на вышыню яго якара з дапамогай Yoff параметр ў showAsDropDown (View анкера, унутр XOFF, унутр Yoff) сінтаксісу.

popupWindow.showAsDropDown(anchor, 0, -anchor.getHeight()+popupView.getHeight);

Акрамя таго, beaware што калі максімальная вышыня дазволена анкер не дапушчае пераўтварэнні, ўсплывальнае акно можа не адлюстроўвацца належным чынам.

3
дададзена
Просьба прадставіць падрабязную інфармацыю аб тым, як гэты код адказвае на пытанне (гэты адказ быў у чарзе на разгляд нізкай якасці паведамленняў).
дададзена аўтар JAL, крыніца

Вы можаце адлюстраваць ўсплывальнае акно заўсёды вышэй якара, вынікаючы

popupWindow.showAsDropDown(anchor, 0, -anchor.getHeight()-popupView.getHeight);
2
дададзена

popupwindow.showAsDropDown (якар, 0, -125); гэтая рэч праца для мяне

0
дададзена