详解Android(安卓)ActionBar之一:ActionBar概述与创建
前面一个系列中讲的是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代码- <manifestxmlns:android="http://schemas.android.com/apk/res/android"
- package="eoe.android.cwj"
- android:versionCode="1"
- android:versionName="1.0">
- <uses-sdkandroid:minSdkVersion="honeycomb"/>
- <application...>
- </application>
- </manifest>
如果需要隐藏Action Bar可以在你的Activity的属性中设置主题风格为NoTitleBar在你的manifest文件中,下面的代码在3.0以前是隐藏标题,而在3.0以后就是隐藏ActionBar了,代码为:
XML/HTML代码- <activityandroid:theme="@android:style/Theme.NoTitleBar">
一、添加活动条目 Action Items
对于活动条目大家可以在下图看到Android 3.0的标题右部分可以变成工具栏,下面的Save和Delete就是两个Action Items活动条目。
下面是一个menu的layout布局文件代码:
XML/HTML代码- <?xmlversion="1.0"encoding="utf-8"?>
- <menuxmlns:android="http://schemas.android.com/apk/res/android">
- <itemandroid:id="@+id/menu_add"
- android:icon="@drawable/ic_menu_save"
- android:title="@string/menu_save"
- android:showAsAction="ifRoom|withText"/>
- </menu>
而其他代码类似Activity中的Menu,比如:
Java代码- @Override
- publicbooleanonOptionsItemSelected(MenuItemitem){
- switch(item.getItemId()){
- caseandroid.R.id.home:
- //当ActionBar的图标被单击时执行下面的Intent
- Intentintent=newIntent(this,Android123.class);
- startActivity(intent);
- break;
- }
- returnsuper.onOptionsItemSelected(item);
- }
对于ActionBar的创建,可以在你的Activity中重写onStart方法:
Java代码- @Override
- protectedvoidonStart(){
- super.onStart();
- ActionBaractionBar=this.getActionBar();
- actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP,ActionBar.DISPLAY_HOME_AS_UP);
- }
调用getActionBar方式在你的Activity的onCreate中时需要注意必须在调用了setContentView之后。
二、添加活动视图 Action View
对于ActionView,我们可以在menu的布局文件使用中来自定义searchview布局,如下:
XML/HTML代码- <itemandroid:id="@+id/menu_search"
- android:title="Search"
- android:icon="@drawable/ic_menu_search"
- android:showAsAction="ifRoom"
- android:actionLayout="@layout/searchview"/>
也可以直接指定Android系统中的SearchView控件,那么这时menu_search的代码要这样写:
XML/HTML代码- <itemandroid:id="@+id/menu_search"
- android:title="Search"
- android:icon="@drawable/ic_menu_search"
- android:showAsAction="ifRoom"
- android:actionViewClass="android.widget.SearchView"/>
大家注意上面的两种方法中一个属性是actionLayout制定一个layoutxml布局文件,一个是actionViewClass指定一个类,最终调用可以在Activity中响应onCreateOptionsMenu方法映射这个menu布局即可。
Java代码- @Override
- publicbooleanonCreateOptionsMenu(Menumenu){
- getMenuInflater().inflate(R.menu.options,menu);
- SearchViewsearchView=(SearchView)menu.findItem(R.id.menu_search).getActionView();
- returnsuper.onCreateOptionsMenu(menu);
- }
更多相关文章
- [Unity通信]快速接入sdk
- Android通过xml给控件添加边框
- Adapter那点事
- 解析错误:解析软件包时出现问题
- 代码在android 8 上面正常运行在 android 9 上面却不能联网问题
- Android基本之UI Layout
- Android(安卓)内存溢出解决方案(OOM) 整理总结
- eclipse Alt+/ 代码失灵、不响应的解决办法
- android 图片旋转 反锯齿