zoukankan      html  css  js  c++  java
  • 【安卓6】高级控件——菜单(menu)

    菜单

    menu ——菜单默认隐藏

             ——实现菜单的接口:

    1. Menu,父接口,用于创建主菜单
    2. SubMenu继承Menu接口,用于创建子菜单
    3. ContextMenu接口继承Menu接口,用于创建上下文菜单
    4. MenuItem接口用户创建菜单项

    1.选项菜单

      基本方法:

      •  public boolean onCreateOptionsMenu(Menu menu)

                 在此方法之中设置多个菜单项(MenuItem)

        • 返回值:返回true表示显示菜单,反之则不显示
      •   public boolean onOptionsItemSelected(MenuItem item)

                  在此方法之中判断菜单项的操作

      •   public void onOptionsMenuClosed(Menu menu)

                  当菜单关闭时触发此操作

      •   public boolean onPrepareOptionsMenu(Menu menu)

                  在菜单显示前触发此操作

        • 返回值:返回true则继续调用OnCreateOptionsMenu(方法),反之则不再调用

     

    1. 在方法中定义菜单
    2. 在资源文件中定义菜单

        1) 在res文件夹下创建menu文件夹

        2) 在menu文件夹下创建options.xml

    <menu
    xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/save"
             android:title="保存信息">
        </item>
        <item android:id="@+id/delete"
             android:title="删除信息">
        </item>
        <item android:id="@+id/help"
             android:title="帮助">
            <menu>
                <item android:id="@+id/item01"
                     android:title="说明">
                </item>
                <item android:id="@+id/item02"
                     android:title="简介">
                </item>
            </menu>
        </item>
    </menu>
    options.xml
     1 protected void onCreate(Bundle savedInstanceState) {
     2         super.onCreate(savedInstanceState);
     3         setContentView(R.layout.main);
     4     }
     5 public boolean onCreateOptionsMenu(Menu menu) {
     6     //1.在方法中定义菜单
     7         //menu.add("增加");
     8         //menu.add("删除");
     9         //SubMenu sm=menu.addSubMenu("帮助");
    10         //sm.add("简介");
    11         //sm.add("说明");
    12     //2.在资源文件中定义菜单
    13         //创建菜单资源解析对象
    14         MenuInflater mif = getMenuInflater();    
    15         //解析菜单资源    
    16         mif.inflate(R.menu.options, menu);
    17         return super.onCreateOptionsMenu(menu);
    18     }
    19 //重写Activity类中的方法在该方法中编写菜单项被选中后的事件代码
    20 public boolean onOptionsItemSelected(MenuItem item) {
    21         switch (item.getItemId()) {
    22         case R.id.save:
    23             Toast.makeText(this, "选中保存", 500).show();
    24             break;
    25         case R.id.delete:
    26             Toast.makeText(this, "选中删除", 300).show();
    27             break;
    28         }
    29         return super.onOptionsItemSelected(item);
    30 }
    选项菜单部分java代码

    2.上下文菜单

      基本方法:

      • public void onCreateContextMenu(ContextMenu menu,

                       View v, ContextMenu. ContextMenuInfo menuInfo)

                 在此方法之中可以设置所需要的显示的所有菜单项

      • public boolean onContextItemSelected(MenuItem item)

                 当某一个菜单项被选中时触发此操作

      • public void onContextMenuClosed(Menu menu)

                 当菜单项关闭时触发此操作

    <menu>
        <item android:id="@+id/save"
             android:title="保存信息"/>
        <item android:id="@+id/delete"
             android:title="删除信息"/>
        <item android:id="@+id/help"
             android:title="帮助"/>
    </menu>
    options.xml
     1 protected void onCreate(Bundle savedInstanceState) {
     2         super.onCreate(savedInstanceState);
     3         setContentView(R.layout.main);
     4         //长按文本框出现上下文菜单
     5         TextView tv=(TextView) findViewById(R.id.TextView01);
     6         registerForContextMenu(tv);
     7 }
     8 public void onCreateContextMenu(ContextMenu menu, 
     9     View v, ContextMenuInfo menuInfo) {
    10         super.onCreateContextMenu(menu, v, menuInfo);
    11         MenuInflater flater=getMenuInflater();
    12         flater.inflate(R.menu.options,menu);        
    13         menu.setHeaderIcon(R.drawable.b);
    14         menu.setHeaderTitle("信息操作");
    15 }
    上下文菜单部分java代码
  • 相关阅读:
    python idea 利用树莓派做家庭报警系统
    Browserslist: caniuse-lite is outdated. Please run next command `npm update`
    maven项目最外层有个红x,项目其他没有x
    要取消:根据 sitemap 的规则[0],当前页面 [pages/index/index] 将被索引
    MySQL的DATE_FORMAT()用法
    maven项目的java和resources等文件夹不在Java Resources的文件夹里,并且缺少Deployment...
    小程序开发demo及资源
    wx.requestSubscribeMessage 订阅消息
    java获取年月日
    goland 文件头自动注释
  • 原文地址:https://www.cnblogs.com/leelee/p/6992967.html
Copyright © 2011-2022 走看看