以下示例为API<11,因为API>=11时本来就有ActionBar可以使用,所以不猜讨论范围之内

今天Google发布了最新的API 18,包括众多新的性能,正好最近在研究ActionBarSherlock,看到最新的Support V7包也开始支持ActionBar了,就研究了一下使用方法,我把自己今天研究到的一个使用方法记录如下,希望可以抛砖引玉吧.

1. 导入Support V7的包.更新SDK 18以后,会发现在 \android-sdk\extras\android\support\v7目录下有三个子文件夹,分别是:appcompat\gridlayout\mediarouter,工作中比较常用的是appcompat,所以今天也只看了这个目录下的android-support-v7-appcompat.jar.把这个文件导入到工程中.

2.在manifest文件中,为你使用了ActionBar的actitity添加theme属性,这个theme必须是 @style/Theme.AppCompat ,@style/Theme.AppCompat.Light.,@style/Theme.AppCompat.Light.DarkActionBar,三种中的一种,我偷懒了,直接在application节点中加了theme.

3.在res/menu目录下,写一个xml文件。官方推荐每一个item项都要有icon和title图标,因为系统默认显示的是图标,而且当屏幕空间不够的时候,未显示的菜单就会隐藏到列表中,而列表中只能显示title字段的值。

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
android:id="@+id/action_search"
android:icon="@drawable/left"
android:title="search"/>
<item
android:id="@+id/action_compose"
android:icon="@drawable/right"
android:title="compose"/> </menu>

4.实现Activity,让它继承ActionBarActivity.在onCreateOptionsMenu()方法中,获取到每一个MenuItem,之后为每一个MenuItem调用MenuItemCompat.setShowAsAction(MenuItem item, int actionEnum)方法,就可以将菜单项变为ActionBar中的子项了.

actionEnum的值有以下几种:

MenuItemCompat.SHOW_AS_ACTION_ALWAYS (始终显示)

MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW (隐藏列表中显示)

MenuItemCompat.SHOW_AS_ACTION_IF_ROOM (屏幕有空间就显示,没空间就隐藏)

MenuItemCompat.SHOW_AS_ACTION_NEVER (永不显示)

MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT (既显示图标又显示文字)

最后 在方法中要 return true

@Override
public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.main, menu); MenuItem menuItem = menu.findItem(R.id.action_search); MenuItem findItem = menu.findItem(R.id.action_compose); MenuItemCompat.setShowAsAction(menuItem, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
MenuItemCompat.setShowAsAction(findItem, MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT); return true;
}

这样就大功告成了.

项目文件下载地址: http://download.csdn.net/detail/hkg1pek/5816295

Android Support V7 包中 ActionBar的使用的更多相关文章

  1. 转 如何使用V7包中ActionBar(Eclipse版)

    http://blog.csdn.net/appte/article/details/11712591 以前3.0以前的版本要使用ActionBar,必须使用国外大牛写的ActionBarSherlo ...

  2. 如何使用V7包中ActionBar(Eclipse版)

    转自:http://blog.csdn.net/appte/article/details/11712591 以前3.0以前的版本要使用ActionBar,必须使用国外大牛写的ActionBarShe ...

  3. android.support.v4包中的LruCache源码简读

    package android.util; import java.util.LinkedHashMap; import java.util.Map; /** * A cache that holds ...

  4. android 使用android.support.v7 添加ActionBar

    当需要在 android 7或更高的版本使用 ActionBar,则可以通过继承ActionBarActivity来实现, 网上有一个开源项目来兼容老版本显示ActionBar的效果:ActionBa ...

  5. [转]Android 导入v7包常见错误,以及项目引用v7包错误解决

    android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理. android的扩展包主要是用来兼容低版本的,比如android3.0以后出现 ...

  6. Android 导入v7包常见错误,以及项目引用v7包错误解决

    android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理. android的扩展包主要是用来兼容低版本的,比如android3.0以后出现 ...

  7. 如何使用android-support-V7包中ActionBar(Eclipse版)

    $*********************************************************************************************$ 博主推荐 ...

  8. android.support.v7.app.AppCompatActivity

    1.Android Studio (api 23) 新建项目的时候 Activity public class MainActivity extends AppCompatActivity 2.系统默 ...

  9. 在项目中引用android.support.v7

    在Android开发中,新建的项目可能因为缺少对sopport工程的引用而报错,可以这样解决. 1.项目右键 --> import --> Android --> Existing ...

随机推荐

  1. xilinx FPGA普通IO作PLL时钟输入

    本帖转自于 :http://www.cnblogs.com/jamesnt/p/3535073.html 在xilinx ZC7020的片子上做的实验; [结论] 普通IO不能直接作PLL的时钟输入, ...

  2. OSSEC

    [科普]入侵检测系统ossec配置文件详解 http://www.freebuf.com/articles/system/11862.html http://www.freebuf.com/autho ...

  3. POJ2485 Highways(最小生成树)

    题目链接. 分析: 比POJ2253要简单些. AC代码: #include <iostream> #include <cstdio> #include <cstring ...

  4. sql server 的ANSI_NULLS设置

    当 SET ANSI_NULLS 为 ON 时,表示SQL语句遵循SQL-92标准.当 SET ANSI_NULLS 为 OFF 时,表示不遵从 SQL-92 标准. SQL-92 标准要求对空值(N ...

  5. apache 创建虚拟目录

    <VirtualHost *:83>    DocumentRoot "E:\PhpProjects"</VirtualHost><Directory ...

  6. TCP协议下Socket的基础编程类型

    套接字的基本操作有: 创建(socket).命名(bind).侦听(listen).连接(accept).关闭(shutdown).发送(send).接受(recv). 下面逐个分析: 一.创建(so ...

  7. jQuery Ajax 实例 ($.ajax、$.post、$.get)【转载】

    本文转载自:http://jun1986.iteye.com/blog/1399242 Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的 ...

  8. G - Balanced Lineup - poj3264(区间查询)

    题意:给你一组值,然后询问某个区间的最大值和最小值得差 分析:因为没有更新,所以只需要查找即可,节点保存一个最大值最小值就行了 ************************************ ...

  9. Jenkins 初见

    在网上貌似没有找到Jenkins的中文的太多的文档,有的都是关于Hudson的一些 零零散散的,所以自己边学习边实践总结了以下系列文章,希望有助于大家对于Jenkins的使用. 本系列文章是基于我3年 ...

  10. 【safari挖的那些坑】iOS safari 浏览器 时间乱码(ios时间显示NaN) 问题解决

    通常 iOS下时间错误表现形式 问题一: 这个界面运用了大量的日期类型的计算,当我们用JavaScript实例化一个日期对象时,我们可以这样用: var date =new Date(); 上面这段代 ...