android action bar 学习记录

来源:互联网 发布:手游推荐软件 编辑:程序博客网 时间:2024/05/17 23:46

     action bar应该分为两种情况来使用:1.android 3.0及以上使用  2.android 2.1及以上使用。接下来我们分别来对这两种版本下anction bar 的使用进行介绍。

    1:android 3.0及以上

     在android3.0及以上(API 11及以上)所有使用Theme.Holo(或者Theme.Holo主题的后代)作为主题的Activity都包含action bar。当你配置你的targrtSdkVersion或minSdkVersion属性的值大于等于11的时候应用将默认使用Theme.Holo主题。所以如果你想使用action bar在android 3.0以上的版本,那么第一步你应该按照如下配置你的应用

<manifest ....>   

                  ............

                  <uses-sdk android:minSdkVersion="11"... >

                  .....

</manifest>

   2:android 2.1及以上

      在android 2.1及以上(API 7及以上)使用action bar 你需要在你的工程中引入 android support library。support library是谷歌为了让低版本的设备使用高版本的api开发的兼容库。假设你的工程中以及引入的android support library,那么你应该通过如下步骤来使用action bar

        <1>   让你使用action bar的Activity继承ActionBarActivity.

public void MainActivity extends ActionBarActivity{............}

<2>    在你的manifest文件中你可以在<application >节点或<activity>节点中添加主题Theme.AppCompat(或者Theme.AppCompat的后代)。在<application>中添加如上主题的作用范围是整个应用,在<activity>中添加的作用范围是当前activity。

<activity android:style="@style/Theme.AppCompat.Light">


   我们在开发过程中,经常需要给action bar添加操作按钮。接下来我们来学习一下如何给action bar添加操作按钮。

   给action bar添加按钮我们可以按照如下步骤:

    1.你首先应该在工程的res/menu目录下添加一个xml文件,这个xml文件用来描述你需要添加的按钮及其属性

     

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="ifRoom" />
   


<!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:showAsActio
n="never"/>

</menu>

需要注意的是android:showAsAction代表操作按钮在action bar上的显示方式,他有五种属性:ifRoom (action bar上有空余位置就显示),never(总是显示在溢出菜单中,不管action bar是否有空余位置),alwas (总是显示在action bar上),withText (withText值示意Action bar要显示文本标题。Action bar会尽可能的显示这个
标题,但是,如果图标有效并且受到Action bar空间的限制,文本标题有可能显示不全), collapseActionView  (这个值是可选的,并且声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间).

  还有一点需要注意的是在android 2.1及以上定义操作按钮有一点不同:

  <menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="ifRoom"  />
    ...
</menu>

注意代码中的红色标记。在android 2.1及以上版本中你需要使用自定义的命名空间。

2.完成第一步的操作以后你需要在你的activity中定义onCreatOptionMenu()回调方法,来解析你定义的menu item。

@Override

public void onCreatOptionMenu(Menu menu){

  MenuInflater inflater=getMenuInflater();

 inflater.inflate(R.menu.demo,menu);

super.onCreateOptionMenu(menu);

}

3.实现OnOptionsItemSelected()回调方法,实现操作按钮的响应

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle presses on the action bar items
    switch (item.getItemId()) {
        case R.id.action_search:
            openSearch();
            return true;
        case R.id.action_settings:
            openSettings();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}









0 0