什么是ActionBar

原文地址:http://www.2cto.com/kf/201307/229693.html





一、什么是ActionBar

        有图有真相,看一下图片就了解的差不多了

                                 

             对于大多数应用,操作栏可以分割为 4 个不同的功能区域。


            1. 应用图标

                应用图标是您应用的标志。在应用图标位置摆放您自己的 logo。注意: 如果当时应用不再顶层界面,那么在图标左边放置一个向左的箭头,表示“向上”按钮,使用户可以回到上一级界面。“向上”按钮的更多细节,请查看 导航 - Navigation 一节。

 

应用图标以及有和没有“向上”按钮的状态。

             2. 视图控制

如果您的应用通过多个不同的视图显示数据,这个区域将允许用户切换视图。可以使用下拉菜单或者标签控件来实现。

如果您的应用没有多个视图,您可以在这里显示不可操作的内容,例如标题或者品牌信息。

             3. 操作按钮

显示您应用中最重的操作。如果图标放不下了,就自动移入“其它操作”菜单。

             4. 其它操作

将较少被用到的操作放在这个菜单里。

 
 

 


            上面这个是google+应用,可以这样理解,ActionBar就是方便用于导航和操作的一个类,苹果是底部导航的风格,那安卓是顶部的风格。操作栏的主要目的是:


突出重要的操作 (例如“新建”和“搜索”) 并且可以方便的使用。
在应用内提供统一的导航和视图切换体验。
较少使用的功能收集到其它操作菜单中,减少界面上的杂乱布局。
为您的应用提供一个展示其特点的空间。
二、如何使用ActionBar

        从Android3.0(API级别11)开始,Action Bar包括在所有Activity中使用的Theme.Holo主题(或是继承Activity的一个子类),如果你不想为一个特定的Activity设置Action Bar,设置Activity主题为Theme.Holo.NoActionBar。如果想让程序在低于3.0版本中使用ActionBar,可以使用开源组件:ActionBar Sherlock。

    1、添加操作项,什么是操作项,看图:就是红线指定的地方,对应的布局文件是menu文件夹下的xml。在activity中这样使用:

什么是ActionBar_第1张图片
 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
public boolean onCreateOptionsMenu(Menu menu) {
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu);
     return true ;
}
 
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
   // Inflate the menu; this adds items to the action bar if it is present.
   getMenuInflater().inflate(R.menu.main, menu);
   return true ;
 

   是不是很眼熟,上面的总结一下:Actionbar就是替换3.0以前的tittle bar和menu。那如何相应菜单的点击事件呢,和之前一样,调用onOptionsItemSelected()方法,
 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
@Override
   public boolean onOptionsItemSelected(MenuItem item) {
     switch (item.getItemId()) {
     case R.id.menuitem1:
       Toast.makeText( this , "Menu Item 1 selected" , Toast.LENGTH_SHORT)
           .show();
       break ;
     case R.id.menuitem2:
       Toast.makeText( this , "Menu item 2 selected" , Toast.LENGTH_SHORT)
           .show();
       break ;
  
     default :
       break ;
     }
  
     return true ;
  
 
@Override
   public boolean onOptionsItemSelected(MenuItem item) {
     switch (item.getItemId()) {
     case R.id.menuitem1:
       Toast.makeText( this , "Menu Item 1 selected" , Toast.LENGTH_SHORT)
           .show();
       break ;
     case R.id.menuitem2:
       Toast.makeText( this , "Menu item 2 selected" , Toast.LENGTH_SHORT)
           .show();
       break ;
 
     default :
       break ;
     }
 
     return true ;
   }     这样就可以操作actions,下面看一下menuxml文件,[java] view plaincopyprint? "http://schemas.android.com/apk/res/android" >
  
    
         android:id= "@+id/action_settings"
         android:orderInCategory= "100"
         android:showAsAction= "never"
         android:title= "@string/action_settings" />
    
         android:id= "@+id/nba"
         android:orderInCategory= "100"
         android:showAsAction= "ifRoom"
         android:title= "@string/nba" />
    
         android:id= "@+id/footbal"
         android:orderInCategory= "100"
         android:showAsAction= "never"
         android:icon= "@drawable/ic_launcher"
         android:title= "@string/footbal" />
  
 
"http://schemas.android.com/apk/res/android" >
 
    
         android:id= "@+id/action_settings"
         android:orderInCategory= "100"
         android:showAsAction= "never"
         android:title= "@string/action_settings" />
    
         android:id= "@+id/nba"
         android:orderInCategory= "100"
         android:showAsAction= "ifRoom"
         android:title= "@string/nba" />
    
         android:id= "@+id/footbal"
         android:orderInCategory= "100"
         android:showAsAction= "never"
         android:icon= "@drawable/ic_launcher"
         android:title= "@string/footbal" />

    需要注意的是, android:showAsAction这个属性,他有几个数值,每一个数值代表意思都不一样,使用时候看一下。而且,actions的显示位置是和屏幕大小相关联的。


    2、隐藏Navigation,Navigation就是这个东西,,在手机上,有的是以实体键形式存在的,这个是设备自己设定的。利用下面代码就可以把这个Navigation取消:


 

?
1
2
3
4
5
6
7
getWindow().
   getDecorView().
   setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
 
getWindow().
   getDecorView().
   setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 

   3、ActionBar非常实用的一个功能就是返回上一层界面

 

你可能感兴趣的:(技术分享)