1. 程式人生 > >使用popupwindow的坑(不顯示)

使用popupwindow的坑(不顯示)

很多時候你可能會遇到popupwindow不顯示或是一部分手機能顯示一些不能顯示的情況,那恭喜你看到了這篇文章。

最開始我建立popupwindow的方式

程式碼如下

//肉眼看上去沒什麼問題,果然拿出我的小米note跑起來也是正常的,但是偏偏來個三星和魅族的一些手機就顯示不了
    View view = LayoutInflater.from(this).inflate(R.layout.choice_rider_num, null);
        window = new PopupWindow(this);
        window.setContentView(view);
        window.setOutsideTouchable(false);
        window.setFocusable(true);
        // 例項化一個ColorDrawable顏色為半透明
        window.setBackgroundDrawable(null);
        window.setAnimationStyle(R.style.mypopwindow_anim_style);
        window.showAtLocation(v, Gravity.BOTTOM, 0, 0);

仔細研究後發現是沒有給popupwindow設定寬高導致的,於是

window = new PopupWindow(this);
        window.setContentView(view);
        //設定寬高
        window.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
        window.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
        window.setOutsideTouchable(false);
        window.setFocusable(true);
        window.setAnimationStyle(R.style.mypopwindow_anim_style);
        window.showAtLocation(v, Gravity.BOTTOM, 0, 0);

解決啦

同理你也可以

window = new PopupWindow(v, WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT);
        window.setContentView(view)
        window.setOutsideTouchable(false);
        window.setFocusable(true);
        // 例項化一個ColorDrawable顏色為半透明
        window.setBackgroundDrawable(null);
        window.setAnimationStyle(R.style.mypopwindow_anim_style);
        window.showAtLocation(v, Gravity.BOTTOM, 0, 0);
作者:laer_L連結:https://www.jianshu.com/p/a18215850a62 來源:簡書 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。