Android_上下文菜单两种创建模式

上下文菜单

天地之功不可仓促,艰难之业当累日月。 --后汉书

当用户长按某个视图或视图元素后出现的浮动菜单,菜单中所包含的动作是与用户所选择视图元素相关的

Android系统中的两种上下文菜单模式

浮动模式

​ 用户在视图元素上执行一个长点击(按住并保持)事件,上下文菜单项浮动列表会弹出,类似对话框,显示在原有视图的上面,覆盖原有的部分用户界面。用户可以每次在浮动菜单中选择一个可执行动作。

动作模式

  • 这种模式是ActionMode的系统实现,可以在屏幕顶部显示上下文动作条,其中的菜单项是与所选视图元素相关的动作。用户可以在使用上下文菜单的动作条中选择一个或者多个动作。
  • 这种模式只有在Android3.0或者更高版本中可用,是使用上下文菜单的推荐模式。

浮动模式创建步骤

  • 创建弹出菜单配置文件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.contextmenu.MainActivity">
        <item
            android:id="@+id/action_AY"
            android:orderInCategory="50"
            android:title="@string/AY"
            app:showAsAction="ifRoom" />
        <item
            android:id="@+id/action_GZ"
            android:orderInCategory="100"
            android:title="@string/GZ"
            app:showAsAction="ifRoom" />
    </menu>
    
  • 添加弹出菜单到对应的View控件上

    im = findViewById(R.id.image);
    
    • 创建上下文菜单

      • 覆盖Activity的onCreateContextMenu()方法

            @Override
            public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
                 
                getMenuInflater().inflate(R.menu.menu_main,menu);
                super.onCreateContextMenu(menu, v, menuInfo);
            }
        
        
      • 调用Menu的add()方法添加菜单项(Menulitem)

          menu.add(0,3,0,"玩耍");
                /*
                * 第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单选项
                * 第二个int类型的Item ID参数,代表的是项目编号。这个参数非常重要
                * 第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认0
                * 第三个String类型的title参数,表示的是选项中的显示文字
                * */
        
    • 调用registerForContextMenu()方法为视图注册上下文菜单

         registerForContextMenu(im);
      
  • 定义菜单事件响应

    • 覆盖Activity的onContextItemSelected()来响应事件

       @SuppressLint("NonConstantResourceId")
          @Override
          public boolean onContextItemSelected(@NonNull MenuItem item) {
             
              switch (item.getItemId()){
             
                  case R.id.action_AY:
                      im.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ColdKite_鸢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值