• 安卓开发-使用XML菜单布局简单介绍


    使用xml布局菜单

      目前为止我们都是通过硬编码来增加菜单项的,android为此提供了一种更便利的方式,就是把menu也定义为应用程序的资源,通过android对资源的本地支持,使我们可以更方便地实现菜单的创建与响应。这一篇就介绍如何使用XML文件来加载和响应菜单,我们需要做这几步:  一般我们都是通过硬编码来增加菜单项的,例如我们之前介绍的。google为此提供了一种更便利的方式,就是
    1. 在/res目录下创建menu文件夹
    2. 在menu目录下使用与menu相关的元素定义xml文件,文件名任意,android会自动为其生成资源ID。例如:R.menu.itemmenu对应menu目录的itemmenu.xml资源文件
    3. 使用xml文件的资源ID,将xml文件中定义的菜单项添加到menu对象中去
    4. 响应菜单项时,使用每个菜单项对应的资源ID

    (一)定义资源文件

      在res目录下创建menu文件夹,在menu下创建一个xml资源文件,我这里叫做main_menu.xml


    编写main_menu.xml如下:

    <?xml version="1.0" encoding="utf-8"?>
    <menu
      xmlns:android="http://schemas.android.com/apk/res/android">
      <!-- group1 -->
      <group android:id="@+id/group1">
          <item android:id="@+id/mi1"
              android:title="item1"/>
          <item android:id="@+id/mi2"
              android:title="item2"/>
      </group>
      <!-- group 2 -->
      <group android:id="@+id/group2">
          <item android:id="@+id/mi3"
              android:title="item3"/>
          <item android:id="@+id/mi4"
              android:title="item4"/>
      </group>
    </menu>

    这里简单的添加了4个菜单项,并将其分为2组。item元素的android:title值可以引用values中的string资源。

    (二)使用MenuInflater添加菜单项

     MenuInflater在android中建立了从资源文件到对象的桥梁,MenuInflater即把菜单xml资源转换为对象并添加到menu对象中,它可以通过activity的getMenuInflater()得到。我们在MainActivity中重写onCreateOptionsMenu(...)方法。

    @Override
    publicboolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.mainmenu, menu);
    returntrue;
    }
    (三)响应菜单

    最后重写onOptionsItemSeleted(...)方法。

    @Override
    publicboolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
    case R.id.mi1:
    // do sth
    break;
    case R.id.mi2:
    // do sth
    break;
    case R.id.mi3:
    // do sth
    break;
    case R.id.mi4:
    // do sth
    break;
    }
    return true;
    }

    这一步最大的体现了使用XML生成菜单的好处。android不仅为我们定义的xml文件生成了资源ID,同样可以为group,menu item来自动生成ID(就像为布局中定义的view生成id那样)。


      至此,我们完成了一个简单的“使用XML生成菜单”的demo,并从中体会到了使用资源文件的好处,因此这是android中创建菜单的推荐方式。实际上,我们在代码中对菜单项或分组的操作都能在xml文件中完成,下面就简单介绍一些比较常用的功能。

    (五)更多菜单资源的功能

    1.资源文件实现子菜单

    子菜单通过在item元素中嵌套menu来实现。

     

    <item android:title="系统设置">
    <menu>
    <item android:id="@+id/mi_display_setting"
    android:title="显示设置"/>
    <item android:id="@+id/mi_network_setting"
    android:title="网络设置"/>
    <!-- 别的菜单项 -->
    </menu>
    </item>
    2.为菜单项添加图标

     

    <item android:id="@+id/mi_exit"
    android:title="退出"
    android:icon="@drawable/exit"/>

    3.设置菜单项的可选出现

    使用android:checkableBehavior设置一组菜单项的可选策略,可选值为:none, all, single

     

    <group android:id="..."
    android:checkableBehavior="all">
    <!-- 菜单项 -->
    </group>
    使用android:checked设置特定菜单项

     

    <item android:id="..."
    android:title="sometitle"
    android:checked="true"/>
    4.设置菜单项可用/不可用

     

    <item android:id="..."
    android:title="sometitle"
    android:enabled="false"/>

    5.设置菜单项可见/不可见

     

    <item android:id="..."
    android:title="sometitle"
    android:visible="false"/>

  • 相关阅读:
    TFS对签入文件忽略设置,解决pdb弹出警告
    利用MSSQL对不经常使用的表进行依赖缓存
    IIS 使用多个https和通配证书解决方案
    传递参数安全验证代码示例
    利用GetType反射方法再调用方法进行传递参数实现调用
    ms10_002 IE浏览器漏洞
    ms17-010漏洞复现
    ms08-067漏洞复现
    tomcat使用log4j管理日志
    Popen No such file or directory 错误
  • 原文地址:https://www.cnblogs.com/qingchen1984/p/3919178.html
Copyright © 2020-2023  润新知