android popupwindow 大小问题

由于popupWindow 的视图是从xml 中渲染的,关于popupwindow的大小碰到了一个问题:跟想象中的大小不一样。于是网上查了一点资料,没找到啥干货,不过在这篇文章中讲了一点。
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0702/1627.html
new PopupWindow(pop_view, ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
这里的WRAP_CONTENT可以换成fill_parent 也可以是具体的数值,它是指PopupWindow的大小,也就是contentview的大小,注意popupwindow根据这个大小显示你的View,如果你的View本身是从xml得到的,那么xml的第一层view的大小属性将被忽略。相当于popupWindow的width和height属性直接和第一层View相对应。
popupWindow 设置为WRAP_CONTENT ,我想得到的是一个宽150dip 高80dip的popupwindow,需要额外加一层。LinearLayout ,这个LinearLayout 的layout_width和layout_height为任意值。而我们真正想显示的View 放在第二层,并且  android:layout_width="150.0dip"  android:layout_height="80.0dip"
这样就可以解决大小问题。
但是我们的pop还需要控制显示位置,要控制这个pop 相对于某个view 来显示,可以使用以下方式。
int[] location = new int[2];
v.getLocationOnScreen(location);//获得view 的位置
pw.getContentView().measure(0,0);
int width = pw.getContentView().getMeasuredWidth();
int height = pw.getContentView().getMeasuredHeight();//这三行代码在pop 显示之前获得它的大小,由于pop 是设置的wrap_content
pw.showAtLocation(v, Gravity.NO_GRAVITY,location[0]-width,location[1]-(height-v.getHeight())/2);//显示在view 的左中位置。
 
后记:项目算是告一段落了,也学到了不少东西。
 

转载于:https://my.oschina.net/qzzsunly/blog/415213

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值