2015-06-14 16 views
7

Mam proste PopupWindow że tworzę z następującego kodu (kod jest w C#, kod Java powinna być zasadniczo taka sama)PopupWindow pokrywa miękkie przyciski na Androidzie 5.0

View popupView = LayoutInflater.From(this.Activity).Inflate(Resource.Layout.LectionFooter, null); 

var popup = new PopupWindow(popupView, ViewGroup.LayoutParams.MatchParent, 
    ViewGroup.LayoutParams.WrapContent, false) 
{ 
    OutsideTouchable = true, 
    AnimationStyle = Resource.Style.FooterAnimation 
}; 

popup.SetBackgroundDrawable(new BitmapDrawable()); 
popup.ShowAtLocation(rootView, GravityFlags.Bottom, 0, 0); 

Na pre-Lollipop urządzeń ten popup wygląda w porządku, ale na Androidzie 5.0, popup pokrywa miękkie przyciski:

PopupWindow Lollipop

oto PopupWindow na Android 4.4 urządzenie:

enter image description here

Czy ktoś ma pomysł, dlaczego tak się dzieje i jak można to naprawić?

Odpowiedz

16

Jest to możliwe błąd w android api 21 To dlatego wprowadzono popup.setAttachedInDecor(true/false); metody w API 22 jednak jest trening, można ustawić prawy y współrzędnych dla popup następująco:

Rect rect = new Rect(); 
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); 
int winHeight = getWindow().getDecorView().getHeight(); 
popup.showAtLocation(rootView, Gravity.BOTTOM, 0, winHeight-rect.bottom); 
+0

działa jak czar , dzięki! Mogę nagrodzić cię nagrodą za 14 godzin, napisać komentarz na wypadek, gdyby o tym zapomniałem – Flagbug

+0

niesamowite, dzięki – Vilen

+1

Ten problem istnieje również dla Dialogów z BOTTOM grawitacją. To rozwiązanie wydaje się działać tak samo przy obliczaniu przesunięcia y. – DeeV

Powiązane problemy