一  说明
android 3.0后出现, 在3.0之前称为Title Bar  显示位置在标题栏上
可以显示应用程序的图标和activity的标题
创建方式的和系统菜单相似, 区别在于: android:showAsAction=""
ifRoom  当ActionBar中有空间 则显示
always  一直显示在ActionBar中
never 永远都不显示在ActionBar中
withText  显示文字
collapseActionView   可以折叠

  二,  ActionBar中提供的功能
1, 显示选项菜单的菜单项
2, 可以使应用程序的图标作为返回上一级界面的功能
3, 提供了交互式View 和 action View
4, 可以实现基于Tab的导航方式, 可以切换Fragment
5, 下拉导航
6, ActionProvider的使用
三, 创建方式
1, 在res/menu 文件中创建每一个菜单项  声明<item/>
显示方式:  showAsAction 
图标:       icon
2, 在Activity中, 重写父类的 onCreateOptionsMenu(Menu menu) ,加载菜单资源
3, 在Activity中, 重写父类的 onOptionsItemSelected(MenuItem item) 处理每个Item的点击事件

四,分割 操作栏   API 14以上  
在清单文件中<application/> 或者<activity/> 中添加属性:android:uiOptions="splitActionBarWhenNarrow"
五, 启动导航图标
作用:  可以让当前App的图标作为可以点击的图标
获取ActionBar的对象:  getActionBar()
setDisplayShowHomeEnabled   设置是否显示应用程序的图标
setDisplayHomeAsUpEnabled    设置应用程序的图标可以被点击, 并且在图标的左侧出现一个向左的箭头
setHomeButtonEnabled
设置应用程序的图标可以被点击,但是没有箭头
        得到应用程序导航图标的ID:   android.R.id.home

六, ActionBar中的常用方法
actionBar.isShowing()  判断当前的ActionBar是否正在显示
actionBar.show()       显示ActionBar
actionBar.hide()       隐藏ActionBar
七, Action View  的使用
可以编辑动作项, 如searchView控件可以直接显示在ActionBar
实现方式有两种:
1, actionViewClass 属性  实现了CollapsibleActionView类
2, actionLayout属性   把普通的布局页面显示
八, ActionBar Tab 导航的功能   通过选项标签来切换Fragment
ActionBar + Fragment
1, 获取ActionBar的对象, 并且设置导航的模式为TABS
     setNavigationMode (int mode) 设置导航模式
    NAVIGATION_MODE_STANDARD   默认方式
    NAVIGATION_MODE_LIST
列表方式
    NAVIGATION_MODE_TABS
tab标签模式
2, 让当前类实现接口 TabListener , 重写3个方法
3, 创建 每个Tab项 并且把它增加到ActionBar中
ActionBar.Tab tab = ActionBar.newTab();
tab.setIcon();//设置图标
tab.stText();//设置要显示的文字
tab.setTabListener();//设置监听

actionBar.add(tab);//把Tab增加到ActionBar中

九:去除ActionbBar

在setContentView之前 requestWindowFeature(Window.FEATURE_NO_TITLE);
           或者:Android:theme="@android:style/Theme.Black.NoTitleBar"

实现Fragment切换实例:

  1. protected void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. setContentView(R.layout.activity_main);
  4. actionBar = getActionBar();
  5. // 获得导航模式
  6. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
  7. // 创建ActionBar.Tab 项, 并且把它增加到ActionBar中
  8. ActionBar.Tab tab = actionBar.newTab();
  9. tab.setText("头条");
  10. tab.setIcon(R.drawable.ic_launcher);
  11. tab.setTabListener(this);
  12. actionBar.addTab(tab);
  13. tab = actionBar.newTab();
  14. tab.setText("体育");
  15. tab.setIcon(R.drawable.ic_launcher);
  16. tab.setTabListener(this);
  17. actionBar.addTab(tab);
  18. actionBar.addTab(actionBar.newTab().setText("财经")
  19. .setIcon(R.drawable.ic_launcher).setTabListener(this));
  20. actionBar.addTab(actionBar.newTab().setText("汽车")
  21. .setIcon(R.drawable.ic_launcher).setTabListener(this));
  22. }
  23. @Override
  24. public void onTabSelected(Tab tab, FragmentTransaction ft) {
  25. // TODO Auto-generated method stub
  26. FragmentNew f = new FragmentNew();
  27. Bundle b = new Bundle();
  28. int position = tab.getPosition();
  29. b.putInt("position", position);
  30. f.setArguments(b);
  31. ft.replace(R.id.f, f);
  32. }
  33. @Override
  34. public void onTabUnselected(Tab tab, FragmentTransaction ft) {
  35. // TODO Auto-generated method stub
  36. }
  37. @Override
  38. public void onTabReselected(Tab tab, FragmentTransaction ft) {
  39. // TODO Auto-generated method stub
  40. }
  41. }
  1. public class FragmentNew extends Fragment {
  2. @Override
  3. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  4. Bundle savedInstanceState) {
  5. // TODO Auto-generated method stub
  6. TextView t = new TextView(getActivity());
  7. int position = getArguments().getInt("position");
  8. switch (position) {
  9. case 0:
  10. t.setText("头条");
  11. break;
  12. case 1:
  13. t.setText("体育");
  14. break;
  15. case 2:
  16. t.setText("财经");
  17. break;
  18. case 3:
  19. t.setText("汽车");
  20. break;
  21. }
  22. return t;
  23. }
  24. }
    1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. xmlns:tools="http://schemas.android.com/tools"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:paddingBottom="@dimen/activity_vertical_margin"
    6. android:paddingLeft="@dimen/activity_horizontal_margin"
    7. android:paddingRight="@dimen/activity_horizontal_margin"
    8. android:paddingTop="@dimen/activity_vertical_margin"
    9. tools:context=".MainActivity" >
    10. <FrameLayout
    11. android:id="@+id/f"
    12. android:layout_width="match_parent"
    13. android:layout_height="match_parent" />
    14. </RelativeLayout>

Android ActionBar的基本用法的更多相关文章

  1. Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

  2. Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

  3. 【转】Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

  4. android的logcat详细用法

    Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命 令来查看和使用. 使用logcat命令 你可以用 logc ...

  5. 怎么通过activity里面的一个按钮跳转到另一个fragment(android FragmentTransaction.replace的用法介绍)

    即:android FragmentTransaction.replace的用法介绍 Fragment的生命周期和它的宿主Activity密切相关,几乎和宿主Activity的生命周期一致,他们之间最 ...

  6. [Xamarin.Android] ActionBar Tips

    [Xamarin.Android] ActionBar Tips ActionBar用途 快速搞懂 ActionBar的用途,可以参考下列文章: [Android]使用 ActionBarCompat ...

  7. Android开发中Bundle用法包裹数据(转)

    Android开发中Bundle用法包裹数据 Bundle的经典用法,包裹数据放入Intent中,目的在于传输数据. SDK 里是这样描述: A mapping from String values ...

  8. 【转】Android各种Adapter的用法

    转自:http://my.oschina.net/u/658933/blog/372151 Android各种Adapter的用法 发表于5个月前(2015-01-27 10:56)   阅读(143 ...

  9. Android ActionBar详解

    Android ActionBar详解 分类: Android2014-04-30 15:23 1094人阅读 评论(0) 收藏 举报 androidActionBar   目录(?)[+]   第4 ...

随机推荐

  1. [转]linux援救模式:linux rescue使用详细图解

    网上很多网友问怎么进rescue 模式,不知道怎么用rescue来挽救系统.  现在我来图解进入rescue (示例系统为RHEL 3) 1.用安装光盘或者硬盘安装的方式进入安装界面,在shell 中 ...

  2. [转载] Can't create table './store/#sql-b2c_1a.frm' (errno: 150)和sql execution error #1452添加外键时错误解决方法

    Can't create table './store/#sql-b2c_1a.frm' (errno: 150)解决方法 错误原因有四: 1.外键的引用类型不一样,主键是int外键是char 2.找 ...

  3. AESUtils.java

    package com.vcredit.framework.utils; import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySp ...

  4. 使用engine关键字指定该表使用哪个engine

    建表及插入数据语句:mysql> create table salary(userid int,salary decimal(9,2));Query OK, 0 rows affected (0 ...

  5. FastDFS connect timed out

    java.net.SocketTimeoutException: connect timed outUpload file "1003.png"fails:connect time ...

  6. mac下docker使用笔记

    安装docker https://docs.docker.com/mac/ 启动docker环境launchpad -> Docker Quickstart Terminal ##       ...

  7. php mysql_num_rows() 与 mysql_affected_rows()

    mysql_num_rows(data) 函数返回结果集中行的数目. data 结果集.该结果集从 mysql_query() 的调用中得到. 此命令仅对 SELECT 语句有效.要取得被 INSER ...

  8. css 待处理

    三角css http://www.jb51.net/article/42513.htm http://blog.aizhet.com/web/4382.html 实现图片灰度效果 http://www ...

  9. js Memoization 优化运行速度

    项目中需要用到 大计算量 耗时的js运算. Memoize 是一个优化方法 ,对耗时的递归运算,漫长的查找运算的结果进行缓存,使运行时间最小化 原理是缓存先前的结果计算值从而可以避免需要重新计算   ...

  10. [LeetCode]题解(python):120 Triangle

    题目来源 https://leetcode.com/problems/triangle/ Given a triangle, find the minimum path sum from top to ...