Android中弹出菜单PopupWindow的使用

  次阅读 作者:智能小宝 来源:互联网 2015-10-13 07:31 我要评论(0)

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.2cto.com

在handleMessage中显示PopupWindow。

作者:zhy_cheng

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...