前面一个系列中讲的是Fragment的内容,Android 3.0中除Fragment外,Action Bar同样也是一个很重要的知识点。我们经常使用Action Bar来替代传统的标题栏。如果是Android平板设备的话,屏幕越大,通过Action Bar设计的标题可以展示的内容越丰富,操作更加便捷。

  Action Bar主要功能包含:

  1. 显示选项菜单。
  2. 提供标签页的切换方式的导航功能,可以切换多个fragment。
  3. 提供下拉的导航条目。
  4. 提供交互式活动视图代替选项条目。
  5. 使用程序的图标作为返回Home主屏或向上的导航操作。

提示:在你的程序中应用ActionBar需要注意几点,SDK和最终运行的固件必须是Android 3.0即honeycomb,在androidmanifest.xml文件中的uses-sdk元素中加入android:minSdkVersion 或android:targetSdkVersion,类似:

XML/HTML代码
  1. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  2. package="eoe.android.cwj"
  3. android:versionCode="1"
  4. android:versionName="1.0">
  5. <uses-sdkandroid:minSdkVersion="honeycomb"/>
  6. <application...>
  7. </application>
  8. </manifest>

如果需要隐藏Action Bar可以在你的Activity的属性中设置主题风格为NoTitleBar在你的manifest文件中,下面的代码在3.0以前是隐藏标题,而在3.0以后就是隐藏ActionBar了,代码为:

XML/HTML代码
  1. <activityandroid:theme="@android:style/Theme.NoTitleBar">

一、添加活动条目 Action Items

  对于活动条目大家可以在下图看到Android 3.0的标题右部分可以变成工具栏,下面的Save和Delete就是两个Action Items活动条目。

  下面是一个menu的layout布局文件代码:

XML/HTML代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <menuxmlns:android="http://schemas.android.com/apk/res/android">
  3. <itemandroid:id="@+id/menu_add"
  4. android:icon="@drawable/ic_menu_save"
  5. android:title="@string/menu_save"
  6. android:showAsAction="ifRoom|withText"/>
  7. </menu>

而其他代码类似Activity中的Menu,比如:

Java代码
  1. @Override
  2. publicbooleanonOptionsItemSelected(MenuItemitem){
  3. switch(item.getItemId()){
  4. caseandroid.R.id.home:
  5. //当ActionBar的图标被单击时执行下面的Intent
  6. Intentintent=newIntent(this,Android123.class);
  7. startActivity(intent);
  8. break;
  9. }
  10. returnsuper.onOptionsItemSelected(item);
  11. }

对于ActionBar的创建,可以在你的Activity中重写onStart方法:

Java代码
  1. @Override
  2. protectedvoidonStart(){
  3. super.onStart();
  4. ActionBaractionBar=this.getActionBar();
  5. actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP,ActionBar.DISPLAY_HOME_AS_UP);
  6. }

调用getActionBar方式在你的Activity的onCreate中时需要注意必须在调用了setContentView之后。

  二、添加活动视图 Action View

对于ActionView,我们可以在menu的布局文件使用中来自定义searchview布局,如下:

XML/HTML代码
  1. <itemandroid:id="@+id/menu_search"
  2. android:title="Search"
  3. android:icon="@drawable/ic_menu_search"
  4. android:showAsAction="ifRoom"
  5. android:actionLayout="@layout/searchview"/>

也可以直接指定Android系统中的SearchView控件,那么这时menu_search的代码要这样写:

XML/HTML代码
  1. <itemandroid:id="@+id/menu_search"
  2. android:title="Search"
  3. android:icon="@drawable/ic_menu_search"
  4. android:showAsAction="ifRoom"
  5. android:actionViewClass="android.widget.SearchView"/>

大家注意上面的两种方法中一个属性是actionLayout制定一个layoutxml布局文件,一个是actionViewClass指定一个类,最终调用可以在Activity中响应onCreateOptionsMenu方法映射这个menu布局即可。

Java代码
    1. @Override
    2. publicbooleanonCreateOptionsMenu(Menumenu){
    3. getMenuInflater().inflate(R.menu.options,menu);
    4. SearchViewsearchView=(SearchView)menu.findItem(R.id.menu_search).getActionView();
    5. returnsuper.onCreateOptionsMenu(menu);
    6. }

更多相关文章

  1. [Unity通信]快速接入sdk
  2. Android通过xml给控件添加边框
  3. Adapter那点事
  4. 解析错误:解析软件包时出现问题
  5. 代码在android 8 上面正常运行在 android 9 上面却不能联网问题
  6. Android基本之UI Layout
  7. Android(安卓)内存溢出解决方案(OOM) 整理总结
  8. eclipse Alt+/ 代码失灵、不响应的解决办法
  9. android 图片旋转 反锯齿

随机推荐

  1. Android ADB Commands Using Batch File
  2. android java代码覆盖率
  3. android图片异步加载解决步骤
  4. Android系列教程(1):Notification 与状态栏
  5. android截屏实现
  6. Handler进阶知识
  7. AS gradle 初步介绍
  8. Android(安卓)NFC Porting 1
  9. Android 内存指标分析
  10. arm-linux-androideabi-ld options