项目中遇到弹出的PopWindow显示在按钮上面,百度了一下 找到一个方法 原文:http://blog.csdn.net/dxj007/article/details/8026691
但是,实际运用的时候发现一个问题,就是无法获取PopWindos的高度,原因是在获取其高度时 PopWindow还没绘制好,最后适了各种方法,终于解决了..
代码 :
pop = new PopupWindow(popView,
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT, false);
pop.setBackgroundDrawable(new BitmapDrawable());
RelativeLayout.LayoutParams ll = (RelativeLayout.LayoutParams) bt_add_cart.getLayoutParams();
// pop.showAsDropDown(bt_add_cart, 0, -popView.getHeight() - bt_add_cart.getHeight());
int[] location = new int[2];
bt_add_cart.getLocationOnScreen(location);
<span style="color:#FF0000;"> pop.getContentView().measure(0, 0);</span>
<span style="color:#FF0000;"> pop.showAtLocation(bt_add_cart, Gravity.NO_GRAVITY, location[0], location[1] - pop.getContentView().getMeasuredHeight());</span>
pop.setAnimationStyle(R.style.popwin_anim_style);
pop.setFocusable(true);
pop.setOutsideTouchable(true);
pop.setTouchable(true);
pop.update();
重点是这里:
<span style="color:#FF0000;">pop.getContentView().measure(0, 0);</span>
<span style="color:#FF0000;">pop.showAtLocation(bt_add_cart, Gravity.NO_GRAVITY, location[0], location[1] - pop.getContentView().getMeasuredHeight());</span>
<pre name="code" class="java">显示在下方就不用说了,左右两边我暂时没用到,所以没有测试.
如果帮到你了,请帮忙留个脚印,谢谢!