Android中弹出菜单PopupWindow的使用
Android中,使用手指触摸,不能像电脑一样有鼠标左键和右键,所以会有一个PopupWindow来代替鼠标右键。当用户点击的时候出现一个弹出的窗口与用户交流信息。好了,现在就开始介绍PopupWindow的用法。
首先声明一个PopupWindow的对象
PopupWindow pop=null;
初始化pop
pop=new PopupWindow(v,ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
第一个参数是要在PopupWindow中显示的的View,第二个参数是PopupWindow的宽,我设置的是与其父窗口一样宽,第三个参数是PopupWindow的高度,我设置的是包含它里面的类容。
我们需要在PopupWindow中设置什么样的类容根据需要,我设置的是几个Button,从xml文件中解析出来的
LayoutInflater l=LayoutInflater.from(this);
View v=l.inflate(R.layout.popup, null);
当用户点击按钮的时候就让PopupWindow显示出来
@Override
public void onClick(View v) {
pop.showAsDropDown(button);
}
这时候PopupWindow就显示在指定
showAsDropDown(View anchor)
anchor的左下方。
当我们不需要PopupWindow的时候调用
pop.dismiss();
另外PopupWindow显示的时候可以用showAtLocation()方法
void android.widget.PopupWindow.showAtLocation(View parent, int gravity, int x, int y)
parent a parent view to get the android.view.View.getWindowToken() token from
gravity the gravity which controls the placement of the popup window
x the popup's x location offset
y the popup's y location offset
第一个参数是要将PopupWindow放到的View,第二个参数是位置,第三第四是偏移值
pop.showAtLocation(WorkPopUpTestActivity.this.ll, Gravity.BOTTOM, 0, 0);
如果是这样的话,就将PopupWindow放到了View的左下角。
最后注意:只有当View加载完成之后才能显示PopupWindow,如果View没有加载完成就加载的话会不成功。
判断View是否加载完成可以判断其宽度是否为为其0,若否,则加载完成。然后我们再加载PopupWindow。这里可以用Handler来实现。
[java]
1. <span style="font-size:18px;">@Override
2. public void run() {
3. // TODO Auto-generated method stub
4. boolean b=true;
5. while(b)
6. {
7. try {
8. Thread.sleep(5);
9. } catch (InterruptedException e) {
10. // TODO Auto-generated catch block
11. e.printStackTrace();
12. }
13. if(ll!=null)
14. {
15. if(ll.getWidth()!=0)
16. {
17. hand.sendEmptyMessage(0);
18. b=false;
19. }
20. }
21.
22.
23. }
24.
25. }</span>
如果加载完成就发送消息。在Handler的handleMessage中处理消息。代码如下
[cpp]
1. Handler hand=new Handler()
2. {
3.
4. @Override
5. public void handleMessage(Message msg) {
6. // TODO Auto-generated method stub
7. super.handleMessage(msg);
8. pop.showAtLocation(WorkPopUpTestActivity.this.ll, Gravity.BOTTOM, 0, 0);
9.
10. }
11.
12. }; www.zzzyk.com
在handleMessage中显示PopupWindow。
补充:移动开发 , Android ,