如何在ActionBar上面添加popup menu
16lz
2021-01-23
标签: 如何 分类: Android
在Android文档中,对于popup menu的讲解非常的简单,只是说了怎么创建。popup menu有个特点就是必须提供一个anchor view来让popup menu依附于它。sdk文档中有创建popup menu 的函数:
- publicvoidshowPopup(Viewv){
- PopupMenupopup=newPopupMenu(this,v);
- MenuInflaterinflater=popup.getMenuInflater();
- inflater.inflate(R.menu.actions,popup.getMenu());
- popup.show();
- }
- publicclassMyActionProviderextendsActionProvider{
- /** Context wrapper. */
- privateContextWrapper mContextWrapper;
-
- PopupMenumPopupMenu;
-
- publicDtcpActionProvider(Contextcontext){
- super(context);
- mContextWrapper=(ContextWrapper)context;
- }
-
- @Override
- publicViewonCreateActionView(){
- // Inflate the action view to be shown on the action bar.
- LayoutInflater layoutInflater=LayoutInflater.from(mContextWrapper);
- Viewview=layoutInflater.inflate(R.layout.my_action_provider,null);
- ImageViewpopupView=(ImageView)view.findViewById(R.id.popup_view);
- popupView.setOnClickListener(newView.OnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- showPopup(v);
- }
- });
- returnview;
- }
-
- /**
- * show the popup menu.
- *
- * @param v
- */
- privatevoidshowPopup(Viewv){
- mPopupMenu=newPopupMenu(mContextWrapper,v);
- mPopupMenu.setOnMenuItemClickListener(newOnMenuItemClickListener(){
-
- @Override
- publicbooleanonMenuItemClick(MenuItemitem){
- // do someting
- returnfalse;
- }
-
- });
- MenuInflaterinflater=mPopupMenu.getMenuInflater();
- inflater.inflate(R.menu.popup_up_menu,mPopupMenu.getMenu());
- mPopupMenu.show();
- }
- }
my_action_provider.xml即为在action bar上显示的图标:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <ImageView
- android:id="@+id/popup_view"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="20dip"
- android:src="@drawable/ownload_icon"/>
-
- </LinearLayout>
- <?xmlversion="1.0"encoding="utf-8"?>
- <menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/popup_menu_option_download"
- android:title="@string/ics_downloader_strings"/>
-
- <item
- android:id="@+id/popup_menu_option_share"
- android:title="@string/ics_sharer_strings"/>
-
- </menu>
- <item
- android:id="@+id/menu_popup_view"
- android:actionProviderClass="my.test.MyActionProvider"
- android:showAsAction="ifRoom"/>
这样的话就可以顺利在action bar 上添加上自定义的popup menu了。
更多相关文章
- Android sdk配置 常见问题及处理方法
- Android之自定义Dialog屏幕旋转时自动关闭解决方法
- react native修改APP的名称和图标
- Android客户端和服务器端数据交互的第一种方法
- Android Google Map实例 - 不同的图标标注在同一图层(Android ma
- Android Zxing 转换竖屏扫描且提高识别率的方法
- 关于Android的模拟器不能正常启动的解决方法