zoukankan      html  css  js  c++  java
  • 标题栏Menu

      标题栏menu就是指下图中红框里面的菜单按钮。

      标题栏上所有的按钮或者其他元素都定义在xml文件里面,这些文件资源称为menu resource。要在标题栏添加按钮,需要在项目的/res/menu/路径下创建xml文件。

      假设给主界面MainActivity的标题栏添加按钮,在/res/menu/下新建一个main.xml文件(如果有就不用建了),在main.xml中输入如下代码:
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context="com.lidi.helloworld.MainActivity" >
     
        <item
            android:id="@+id/action_settings"
            android:icon="@drawable/ic_launcher"
            android:orderInCategory="100"
            android:showAsAction="ifRoom"
            android:title="@string/action_settings"/>
    
    </menu>

    --------------------------------------------------------下面是上面的代码的一些解释,可以跳过----------------------------------------------------------

    一个item就是一个按钮。
     
    android:id="@+id/action_settings"为这个按钮添加id。
     
    android:icon="@drawable/ic_launcher"为这个按钮添加图标;
    图标这 么设置的话,则一定要保证/res/drawable/下面有ic_launcher.png这个图片,/res/drawable/ic_launcher.png是程序启动用的图标,我现在项目里没有添加其它图标,所以暂时用这个图标。
     
    android:orderInCategory="100"设置按钮的优先级,空间不够时优先显示值大的按钮(优先显示值大还是值小我目前还不太清楚)。
     
    android:showAsAction="ifRoom"表示如果控件足够才显示。这个属性有5个值,描述分别如下:
     
    ifRoom 剩余空间足够时才显示,不够时将隐藏在溢出列表中
    never 从不在标题栏显示,隐藏在溢出列表中并且显示时只显示文本,所以定义item的时候最好带上android:title属性。
    always 无论是否溢出,总会显示。
    withText 图标和文本同时在标题栏显示,空间不足时文本可能显示不全。
    collapseActionView 同一menu下其它按钮折叠到这个按钮上,用户点击这个时所有按钮才展开。(我是这么理解的,具体是不是没试过o(╯□╰)o)。

    android:title="@string/action_settings" 设置按钮的文本。

     
    注意:在比较老的安卓系统(比如Android 2.1)里面,android:showAsAction这样是不行的,showAsAction是由Surport Library提供的,所以你需要自定义XML namespace,并用这个namespace作为showAsAction的前缀,一般以项目名称给XML namespace命名,但也可以随便命名,例如HelloWorld的项目就用helloworld为XML namespace命名,像下面加粗部分:
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:helloworld="http://schemas.android.com/apk/res-auto" > <!-- Search, should appear as action button --> <item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      helloworld:showAsAction="ifRoom" /> ... </menu>
    -----------------------------------------------------------解释完毕,后面是剩下的步骤-----------------------------------------------------------
     
      然后,重写MainActivity的onCreateOptionsMenu函数,引用main.xml文件,将按钮添加到标题栏。在MainActivity.java中添加如下代码(已经存在该部分代码的话请对照修改):
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

       然后给按钮添加功能。用户点击item的时候,系统会调用该Activity的onOptionsItemSelected函数,所以我接下来要实现这个函数来给按钮添加功能。这个函数需要判断用户点击了哪个按钮,我们可以用getItemId()函数来获取被点击的item的id,并根据id的不同执行不同的命令。onOptionsItemSelected函数代码如下:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle presses on the action bar items
        switch (item.getItemId()) {
            case R.id.action_settings:
                //省略执行功能的代码
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

       由于我只添加了一个item,其id是action_settings,所以我这里只写一个case,如果有多个item,就得写多个case,比如假如我有在main.xml里面添加了一个item,设置其id为action_search,我就需要在上面的switch块里面添加下面这样一个case:

    case R.id.action_search:
             //省去执行功能的代码
             return true;

       到这里,给标题栏添加按钮,并给按钮添加点击事件就完成了。

  • 相关阅读:
    4级搭建类403-Oracle 12cR2 DG 搭建(WinServer 2019 一对一 LGWR ASYNC CDB模式)
    4级搭建类402-Oracle 11gR2 DG搭建(WinServer 2019 一对一 LGWR ASYNC)
    12c OCP考试专项 [1z0-071]-Q23: alias别名的使用(2020.06.21)
    12c OCP考试专项 [1z0-071]-Q22: 小计合计(2020.06.18)
    12c OCP考试专项 [1z0-071]-Q21: 日期返回格式(2020.06.18)
    12c OCP考试专项 [1z0-071]-Q20: 集合操作符(2020.06.18)
    12c OCP考试专项 [1z0-071]-Q19: 升序降序/最大值排序(2020.06.18)
    12c OCP考试专项 [1z0-071]-Q18: IS NOT NULL 查询空值及 DISTINCT 去重用法(2020.06.18)
    12c OCP考试专项 [1z0-071]-Q17: 对象权限的授权(2020.06.18)
    12c OCP考试专项 [1z0-071]-Q16: 对象权限的授权(2020.06.18)
  • 原文地址:https://www.cnblogs.com/dige1993/p/4864877.html
Copyright © 2011-2022 走看看