Android--ActionBar的基本用法

学向勤中得,萤窗万卷书。这篇文章主要讲述Android--ActionBar的基本用法相关的知识,希望能为你提供帮助。
  一   说明
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切换实例:
 
[java]  view plain  copy     print?

  1. protected  void  onCreate(Bundle  savedInstanceState)  {   
  2.                 super.onCreate(savedInstanceState);    
  3.                 setContentView(R.layout.activity_main);    
  4.    
  5.                 actionBar  =  getActionBar();    
  6.                 //  获得导航模式   
  7.                 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);    
  8.                 //  创建ActionBar.Tab  项,  并且把它增加到ActionBar中   
  9.                 ActionBar.Tab  tab  =  actionBar.newTab();    
  10.    
  11.                 tab.setText("头条");    
  12.                 tab.setIcon(R.drawable.ic_launcher);    
  13.                 tab.setTabListener(this);    
  14.                 actionBar.addTab(tab);    
  15.    
  16.                 tab  =  actionBar.newTab();    
  17.                 tab.setText("体育");    
  18.                 tab.setIcon(R.drawable.ic_launcher);    
  19.                 tab.setTabListener(this);    
  20.                 actionBar.addTab(tab);    
  21.    
  22.                 actionBar.addTab(actionBar.newTab().setText("财经")   
  23.                                 .setIcon(R.drawable.ic_launcher).setTabListener(this));    
  24.    
  25.                 actionBar.addTab(actionBar.newTab().setText("汽车")   
  26.                                 .setIcon(R.drawable.ic_launcher).setTabListener(this));    
  27.         }   
  28.    
  29.         @Override   
  30.         public  void  onTabSelected(Tab  tab,  FragmentTransaction  ft)  {   
  31.                 //  TODO  Auto-generated  method  stub   
  32.                 FragmentNew  f  =  new  FragmentNew();    
  33.                 Bundle  b  =  new  Bundle();    
  34.                 int  position  =  tab.getPosition();    
  35.                 b.putInt("position",  position);    
  36.                 f.setArguments(b);    
  37.                 ft.replace(R.id.f,  f);    
  38.    
  39.         }   
  40.    
  41.         @Override   
  42.         public  void  onTabUnselected(Tab  tab,  FragmentTransaction  ft)  {   
  43.                 //  TODO  Auto-generated  method  stub   
  44.    
  45.         }   
  46.    
  47.         @Override   
  48.         public  void  onTabReselected(Tab  tab,  FragmentTransaction  ft)  {   
  49.                 //  TODO  Auto-generated  method  stub   
  50.    
  51.         }   
  52. }   
[java]  view plain  copy     print?
  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.    
  9.                 switch  (position)  {   
  10.                 case  0:   
  11.                         t.setText("头条");    
  12.                         break;    
  13.                 case  1:   
  14.                         t.setText("体育");    
  15.                         break;    
  16.                 case  2:   
  17.                         t.setText("财经");    
  18.                         break;    
  19.                 case  3:   
  20.                         t.setText("汽车");    
  21.                         break;    
  22.    
  23.                 }   
  24.    
  25.                 return  t;    
  26.         }   
  27. }   
【Android--ActionBar的基本用法】 
[html]  view plain  copy     print?
    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.    
    11.         < FrameLayout   
    12.                 android:id="@+id/f"   
    13.                 android:layout_width="match_parent"   
    14.                 android:layout_height="match_parent"  />    
    15.    
    16. < /RelativeLayout>    

























































    推荐阅读