Android之用PopupWindow实现弹出listview形式菜单

Android 4.0之前的菜单使用非常广泛,但是在android4.0之后,很少使用先前的菜单样式了。那如何实现下图的样式了?

我们简单模拟一下。

(1)屏蔽系统弹出的菜单:

1、首先创建至少一个系统的菜单选项

  1. @Override  
  2.    public boolean onCreateOptionsMenu(Menu menu)  
  3.    {  
  4.        menu.add("menu");// 必须创建一项   
  5.        return super.onCreateOptionsMenu(menu);  
  6.    }  

2、在onMenuOpened方法里显示自己的菜单视图,并返回FALSE。 注意必须返回false,不然会出现menu选项

  1. @Override  
  2.   public boolean onMenuOpened(int featureId, Menu menu){  
  3.   
  4.       switchSysMenuShow();  
  5.     
  6.       return false;// 返回为true 则显示系统menu   
  7.     
  8.   }  

3、从图片中可以看出,弹出的是一个listview,所以要按照listview的标准来实现布局,给出布局文件。

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical"    
  6.     android:paddingLeft="20dip"  
  7.     android:gravity="right"  
  8.     android:id="@+id/hotalk_menu_view_layout" >       
  9.     <!-- 显示的listview -->   
  10.         <ListView android:id="@+id/hotalk_menu_listview"  
  11.             android:layout_width="wrap_content"   
  12.             android:layout_height="wrap_content"  
  13.             android:paddingLeft="7.6dip"      
  14.             android:paddingRight="7.6dip"                     
  15.             android:fadingEdge="none"  
  16.             android:focusable="true"  
  17.             android:longClickable="true"  
  18.             android:scrollbarSize="0sp"          
  19.             android:scrollbarStyle="insideOverlay"  
  20.             android:background="@drawable/menu_bg_popup"  
  21.             android:divider="@drawable/menu_bg_line"  
  22.             android:dividerHeight="1px"  
  23.             android:cacheColorHint="#00000000">  
  24.     </ListView>     
  25. </RelativeLayout> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值