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);
參考:https://www.jianshu.com/p/a18215850a62