ActionBarCompat-Basic Demo下载地址:https://github.com/googlesamples/android-ActionBarCompat-Basic/#readme

Android ActionBar样式生成器:

http://jgilfelt.github.io/android-actionbarstylegenerator/#name=example&compat=sherlock&theme=light&actionbarstyle=solid&texture=0&hairline=0&neutralPressed=0&backColor=E4E4E4%2C100&secondaryColor=D6D6D6%2C100&tabColor=33B5E5%2C100&tertiaryColor=F2F2F2%2C100&accentColor=33B5E5%2C100&cabBackColor=FFFFFF%2C100&cabHighlightColor=33B5E5%2C100

ActionBar官方说明:https://developer.android.google.cn/reference/android/support/v7/app/ActionBar

Menu官方说明:https://developer.android.google.cn/reference/android/view/Menu

Menu官司方说明:https://developer.android.google.cn/reference/android/view/MenuItem

ActionBarCompat-Basic

示例展示了在基本页面中创建和使用ActionBar菜单:

  1. 创建Activity并继承AppCompatActivity;
  2. 在res资源文件夹下创建menu文件夹,并在menu文件夹下创建主菜单布局xml;
  3. 重写onCreateOptionsMenu()方法,创建并初始化菜单;
  4. 重写onOptionsItemSelected()方法。
  1. import android.os.Bundle;
    import android.support.v4.view.MenuItemCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.view.Menu;
    import android.view.MenuItem;
  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.sample_main);
  6. }
  7. /**
  8. * 创建并实例化菜单,添加菜单项,返回true则显示菜单。
  9. */
  10. @Override
  11. public boolean onCreateOptionsMenu(Menu menu) {
  12. // 绑定菜单布局文件,布局文件已定义两个菜单子项refresh和settings
  13. getMenuInflater().inflate(R.menu.main, menu);
  14. // 动态添加location菜单子项,菜单子项id在文件ids.xml中定义
         // 第一个int类型的groupID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
         // 第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个itemID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。
         // 第三个int类型的orderID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。(参考MenuItem.getOrder())
         // 第四个String类型的title参数,表示选项中显示的文字。
         MenuItem locationItem = menu.add(0, R.id.menu_location, 0, R.string.menu_location);
  1. locationItem.setIcon(R.drawable.ic_action_location);
  2. // 设置菜单子项如何显示,可选值:
         // SHOW_AS_ACTION_ALWAYS:总是显示在ActionBar里,建议最多不超过两个子项,太多在小屏幕设备上会影响体验。
         // SHOW_AS_ACTION_IF_ROOM:由系统决定如何摆放。
         // SHOW_AS_ACTION_NEVER:不将子项显示在ActionBar里。
    // SHOW_AS_ACTION_WITH_TEXT:子项显示为文本按钮,不管是否有设置图标。
         // 原Demo使用的是MenuItemCompat.setShowAsAction(locationItem, MenuItem.SHOW_AS_ACTION_IF_ROOM);但这个方法在API 26以后已经被其他方法取代。
  3. locationItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
  4. return true;
  5. }
  6. /**
  7. * 菜单事件处理,如果处理完成,则返回true
  8. */
  9. @Override
  10. public boolean onOptionsItemSelected(MenuItem item) {
  11. switch (item.getItemId()) {
  12. case R.id.menu_refresh:
  13. // Here we might start a background refresh task
  14. return true;
  15. case R.id.menu_location:
  16. // Here we might call LocationManager.requestLocationUpdates()
  17. return true;
  18. case R.id.menu_settings:
  19. // Here we would open up our settings activity
  20. return true;
  21. }
  22. return super.onOptionsItemSelected(item);
  23. }
  24. }

ActionBar主布局文件,menu文件夹下的main.xml,另外Android Studio提供快速创建菜单布局文件的方法:

  1. 在res文件夹右键选择new->android resource directory;
  2. 弹出对话框后,在Directory name中输入menu,Resource type中选择menu,然后确定;
  3. 此时res文件夹下已创建menu文件夹,右键点击menu文件夹,选择new->Menu resource file;
  4. 弹出对话框后,输入File name,然后确定即可。
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- 这里添加了新的support命名空间,允许以向后兼容的方式使用showAsAction属性 -->
  3. <menu xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:support="http://schemas.android.com/apk/res-auto" >

  5.    <!-- showAsAction设置为ifRoom -->
  6. <item
  7. android:id="@+id/menu_refresh"
  8. android:icon="@drawable/ic_action_refresh"
  9. android:title="@string/menu_refresh"
  10. support:showAsAction="ifRoom"/>
  11.  
  12. <!-- showAsAction设置为never -->
  13. <item
  14. android:id="@+id/menu_settings"
  15. android:icon="@drawable/ic_action_settings"
  16. android:title="@string/menu_settings"
  17. support:showAsAction="never"/>
  18.  
  19. </menu>

values文件夹下创建ids.xml文件,用于定义动态添加的子菜单location:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <item name="menu_location" type="id"/>
  4. </resources>

Demo截图如下,点击右上角三点弹出settings菜单子项:

Android 官方DEMO - ActionBarCompat-Basic的更多相关文章

  1. android 官方demo地址

    android官方demo地址都放在了github上:https://github.com/googlesamples

  2. Android 官方Demo ActionBarCompat-Styled

    ActionBarCompat-Styled Demo下载地址:https://github.com/googlesamples/android-ActionBarCompat-Styled/#rea ...

  3. Android 官方DEMO BasicNetworking

    本示例演示如何使用Android API检查网络连接. Demo下载地址:https://github.com/googlesamples/android-BasicNetworking/#readm ...

  4. 使用Red5-Pro Android官方Demo拆解分析(一)

    一.配置文件 1.导入库文件jniLibs到main文件夹下 2.导入red5streaming.jar 3.在build里到入其他的包,代码如下: dependencies { implementa ...

  5. 如何成功实施SDL提供的官方Android平台Demo

    如何成功实施SDL提供的官方Android平台Demo 作者:雨水  日期:2014-4-30 编写说明:SDL的官方提供了一个Anroid的demo模板SDLActivity,无法直接执行,依照官方 ...

  6. 解决Android微信支付官方demo运行失败

    Android微信支付官方demo运行失败,在此简单记录一下解决步骤 1.httpclient错误 官方给的demo是eclipse的,打开之后提示httpclient的错误,我知道在as下解决htt ...

  7. android开源项目之OTTO事件总线(二)官方demo解说

    官方demo见  https://github.com/square/otto 注意自己该编译版本为2.3以上,默认的1.6不支持match_parent属性,导致布局文件出错. 另外需要手动添加an ...

  8. React Native官方DEMO

    官方给我们提供了UIExplorer项目,这里边包含React Native的基本所有组件的使用介绍和方法. 运行官方DEMO步骤如下 安装react native环境 React Native项目源 ...

  9. 改造 Android 官方架构组件 ViewModel

    前言 Android 官方架构组件在今年 5 月份 Google I/O 大会上被公布, 直到 11 月份一直都是测试版, 由于工作比较繁忙, 期间我只是看过类似的文章, 但没有在实际项目中使用过, ...

随机推荐

  1. sql server 性能调优之 当前用户请求分析 (1)

    一. 概述 在生产数据库运行期间,有时我们需要查看当前用户会话状态或者是说数据库当前是否运行良好, 应用的场景比如:当运行的应用系统响应突然变慢时需要分析数据库的.或想分析当前的数据库是否繁忙,是否有 ...

  2. unittest单元测试框架

    unittest单元测试框架 概述: 单元测试框架主要用来完成以下三件事: 提供用例组织与执行:当测试用例只有几条时,可以不必考虑用例的组织,但是当用例达到成百上千条时,大量的用例堆砌在一起,就产生了 ...

  3. 一些不常用但又很有用的css小tips

    1.box-sizing:border-box box-sizing有三个属性:content-box(默认值) || border-box || inhreit.第一个自然不用说,比如我们设置一个d ...

  4. 一个前端开发者换电脑的过程(IDE篇)

    一台全新的电脑,需要做出怎样的改变,才可以摇身一变成为前端开发者能用的电脑呢.首先,我们需要安装一个编辑器,这里我们选择目前最火的vscode. 先去到它的官网,把对应版本的vscode下载下来. 然 ...

  5. zabbix-proxy使用配置

    简介 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix pr ...

  6. jvm详情——6、堆大小设置简单说明

    年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64 ...

  7. Tomcat(三):tomcat处理连接的详细过程

    Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html tomcat可以处理静态资源的请求,也可以通过servlet处理动态资源的请求 ...

  8. collect_list/collect_set(列转行)

    Hive中collect相关的函数有collect_list和collect_set. 它们都是将分组中的某列转为一个数组返回,不同的是collect_list不去重而collect_set去重. 做 ...

  9. [angularjs] angularjs系列笔记(七)HTML DOM

    AngularJs为HTML DOM元素的属性提供了绑定数据的指令 ng-disabled指令 ng-disabled指令直接绑定数据到HTML元素的disabled属性 ng-show指令 ng-s ...

  10. C-Linux_毫秒级随机值获取

    秒级随机值-常用方法: #include <stdlib.h> #include <stdio.h> #include <stdio.h> #include < ...