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来实现。

  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. }</span>

如果加载完成就发送消息。在Handler的handleMessage中处理消息。代码如下

  1. Handler hand=new Handler()
  2. {
  3. @Override
  4. public void handleMessage(Message msg) {
  5. // TODO Auto-generated method stub
  6. super.handleMessage(msg);
  7. pop.showAtLocation(WorkPopUpTestActivity.this.ll, Gravity.BOTTOM, 0, 0);
  8. }
  9. };

在handleMessage中显示PopupWindow。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 15:54:07

Android中弹出菜单PopupWindow的使用的相关文章

Android中弹出对话框,AlertDialog关键代码

写在这里便于以后查看. Android中弹出对话框的关键代码: 1 btn01.setOnClickListener(new OnClickListener() { 2 3 @Override 4 public void onClick(View v) { 5 Toast.makeText(musicActivity.this, "tanchu", 100).show(); 6 //以下是弹出对话框的关键代码, 7 AlertDialog.Builder b = new AlertDi

Android弹出菜单

在实际开发中,我们可能会用到toolbar控件,然后还要在右上角添加弹出菜单,但是toolbar弹出菜单,实在是不好控制位置,因此用户体验很是不好,所以 就想到了用popupwindow来代替弹出的菜单.话不多说先看效果(文章末尾有demo下载地址): 效果还是基本能接受的. 下面讲讲实现过程: 一:菜单布局,很简单,和一般的布局一样,linearlayout中包裹textview和imageview(需要图片的话) <?xml version="1.0" encoding=&q

WPF中弹出菜单

在WPF里弹出菜单是用Popup,你那个右键的是上下文菜单(也就是快捷菜单). <Grid> <Button x:Name="BtnPop" Width="100" Height="30" HorizontalAlignment="Left" VerticalAlignment="Bottom" Content="Popup" Click="BtnPop_Cl

Android中弹出dialog后无法捕捉back键

一.需求 在Android开发过程中,弹出dialog后无法捕捉back键,点击back按键无响应. 二.解决方案 原因:弹出dialog后,activity失去焦点,dialog获得当前焦点. 解决办法:在dialog中可以通过调用setOnKeyListener()方法来为dialog增加按键事件的监听. private void createDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); bui

android开发步步为营之64:PopupWindow实现自定义弹出菜单

打开PopupWindow的源码,你会发现它其实也是通过WindowManager来添加view的. private void invokePopup(WindowManager.LayoutParams p) { if (mContext != null) { p.packageName = mContext.getPackageName(); } mPopupView.setFitsSystemWindows(mLayoutInsetDecor); setLayoutDirectionFro

Android开发技巧——使用PopupWindow实现弹出菜单

在本文当中,我将会与大家分享一个封装了PopupWindow实现弹出菜单的类,并说明它的实现与使用. 因对界面的需求,android原生的弹出菜单已不能满足我们的需求,自定义菜单成了我们的唯一选择,在本文当中,我将与大家分享如何使用PopupWindow实现弹出菜单. 1.弹出菜单的封装PopMenu PopupWindow可以说是一个浮动在Activity之上的容器,通常用来显示自定义的视图.比如像自动完成输入框AutoCompleteTextView,它的提示列表就是使用PopupWindo

【android开发】使用PopupWindow实现页面点击顶部弹出下拉菜单

没有太多花样,也没有很复杂的技术,就是简单的PopupWindow的使用,可以实现点击弹出一个自定义的view,view里可以随便设计,常用的可以放一个listview. demo中我只是一个点击展示,简单的使用了fade in out的动画效果,也没有精美的图片资源,看着也丑,不过这么短的时间,让你掌握一个很好用的技术,可以自己扩展,不很好么? 废话不说了,直接上代码: MainActivity.java [java] view plaincopy public class MainActiv

用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局)

     用PopupWindow实现弹出菜单是一个比较好的方式.当然我们还有一个类PopupMenu也能实现弹出菜单,但那个太过于局限了,所以不是很推荐. 这个实例的效果是这样的:点击按钮后,一个菜单从屏幕的右边滑入到屏幕中,点击按钮/空白处后菜单消失. 布局文件时一个按钮,我就不贴出代码了.下面是菜单的布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&

【转】android创建Popwindow弹出菜单的两种方式

方法一的Activity [java] view plaincopy package com.app.test02; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import