2015-06-14 19 views
7

tôi đã đơn giản PopupWindow mà tôi tạo ra với đoạn mã sau (mã là trong C#, mã Java nên về cơ bản giống nhau)PopupWindow chồng chéo nút mềm trên Android 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); 

Trên các thiết bị-Lollipop trước , popup này có vẻ tốt đẹp, nhưng trên Android 5.0, popup chồng lên nút mềm:

PopupWindow Lollipop

đây là PopupWindow trên một thiết bị Android 4.4:

enter image description here

Có ai biết tại sao điều này xảy ra và cách khắc phục điều này?

Trả lời

16

Điều này có thể lỗi trong android api 21 đó là lý do họ đưa ra popup.setAttachedInDecor(true/false); phương pháp trong api 22 tuy nhiên có được một buổi tập luyện, bạn có thể đặt ngay y phối hợp cho popup của bạn như sau:

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

trình như một say mê , cảm ơn! Tôi có thể trao cho bạn tiền thưởng trong 14 giờ, viết bình luận trong trường hợp tôi quên nó – Flagbug

+0

tuyệt vời, cảm ơn – Vilen

+1

Vấn đề này tồn tại đối với các Dialog với trọng lực BOTTOM. Giải pháp này dường như làm việc giống nhau trong việc tính toán chênh lệch y. – DeeV

Các vấn đề liên quan