Android Menu:使用Popup Menu

原创 2015年11月18日 16:51:04


Popup Menu和Context menu有些类似,都是指定某个view弹出菜单,但Context Menu需要长按,用户体验较差。Popup Menu使用自定义方式启动,比如单击启动,用户体验会更换。

实现原理很简单,在某个view上添加单击监听事件,触发显示Popup Menu菜单,然后监听菜单的点击事件,做出处理。

效果如下:


代码如下:

public class PopupMenuActivity extends Activity {
    private static final String TAG = "PopupMenuActivity";
    private Context context;

    private View view;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_popup_menu);

        context = PopupMenuActivity.this;

        view = (View) findViewById(R.id.view);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showPopupMenu(v);
            }
        });
    }

    private void showPopupMenu(View view) {

        PopupMenu popup = new PopupMenu(context, view, Gravity.CENTER_HORIZONTAL);

        popup.getMenuInflater().inflate(R.menu.menu_popup_menu, popup.getMenu());

        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem menuItem) {
                switch (menuItem.getItemId()) {
                    case R.id.action_settings:
                        Log.d(TAG, "onMenuItemClick action_settings");
                        return true;
                    case R.id.action_test:
                        Log.d(TAG, "onMenuItemClick action_test");
                        return true;
                }
                return false;
            }
        });

        popup.show();
    }


}

这里使用的是xml定义的菜单,也很简单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.hornsey.myapplication.Demo.PopupMenuActivity">
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_test"
        android:orderInCategory="101"
        android:title="@string/hello_world"
        app:showAsAction="never" />

</menu>



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

Android之三种Menu的使用与分析

请尊重他人劳动成果,请勿随意剽窃,转载请注明,谢谢!转载请注明出处:http://blog.csdn.net/evan_man 以下说明全部针对Android3.0(Api-11)。本指南将...
  • evan_man
  • evan_man
  • 2016年06月15日 20:27
  • 24583

Android菜单Menu,PopupMenu的使用

选项菜单和子菜单 菜单项关联的Activity 上下文菜单 选项菜单和子菜单SubMenu Java代码中定义 代码区 使用XML文件定义 Activity代码 menu_mainx...

Android Studio Project模式的项目结构

Android Studio

Android 之 ContentProvider 与 ContentResolver

在Android官方指出的Android的数据存储方式总共有五种,分别是:Shared Preferences、网络存储、文件存储、外储存储、SQLite。但是我们知道一般这些存储都只是在单独的一个...
  • lalate
  • lalate
  • 2016年05月20日 17:13
  • 6649

Android Popup Menu的使用方法

1. 概述 弹出式菜单

Pro Android学习笔记(三五):Menu(6):XML方式 & PopUp菜单

利用XML创建菜单 在代码中对每个菜单项进行设置,繁琐且修改不灵活,不能适配多国语言的要求,可以利用资源进行设置。在之前的Pro Android学习笔记(十):了解Intent(上)#系统的Inten...

如何控制弹出菜单向上弹出(how to control popup menu pop direction)

Popup Menu是windows组件,默认只能控制弹出点,但弹出方向是向上还是向下是系统自动控制的。如果有屏幕下方有足够的空间,默认是向下的。但有的时候需要菜单向上弹出,如图所示: 以前我的...
  • ppayun
  • ppayun
  • 2011年10月25日 21:57
  • 4417

如何在ActionBar上面添加popup menu

标签:  如何  分类: Android        在Android文档中,对于popup menu的讲解非常的简单,只是说了怎么创建。popup menu有个特点就是必须提...

如何在ActionBar上面添加popup menu

在Android文档中,对于popup menu的讲解非常的简单,只是说了怎么创建。popup menu有个特点就是必须提供一个anchor view来让popup menu依附于它。sdk文档中有创...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Menu:使用Popup Menu
举报原因:
原因补充:

(最多只允许输入30个字)