ActionBar 是Android3.0以后出现的特性。为了让低版本的Android支持ActionBar,google推出了相关的support包,现在通过support包,ActionBar现在可以支持Android2.1 以及以上版本,support包的名称是android-support-v7-appcompat.jar这个包需要结合android-support-v4.jar使用。android-support-v4.jar主要是为了方便低版本的Android系统使用Fragment以及ViewPager.
对于minSDK=7 的应用,如果要使用ActionBar,需要完成如下设置
1. Activity 继承于ActionBarActivity
获取ActionBar的方法是getSupportActionBar()
获取FragmentManager的方法是getSupportFragmentManager()
2.Activity 的主题使用Theme.AppCompat的设置,如
<style name="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
3.添加support包
android-support-v4.jar
android-support-v7-appcompat.jar
对于minSDK>=11的应用,不需要做特别的设置。android.app.Activity已经添加了对ActionBar的支持,获取ActionBar的方法是getActionBar,在Eclispe和Android-Studio等IDE中,也默认添加了适合ActionBar的主题如
<style name="AppTheme"parent="android:Theme.Holo.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
如果不想显示ActionBar.调用如下代码
getSupportActionBar().hide();
getActionBar().hdie();
ActionBar 的items是通过menu菜单的配置文件来实现的。一般放在res/menu 下面。也就是通过onCreateOptionsMenu()方法来实现,和菜单键的实现机制一样,具体的配置文件如下:
<menuxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="name.lushuai.android.client.application.ui.actionbar.compat.ActionBarCompatActivity">
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="always" />
</menu>
Menu 的items需要注意属性andcroid:showAsAction,如果属性值为”always”,那么items就会总是显示在ActionBar上,如果属值为”ifRoom”,则表示,如果ActionBar上有足够的空间,那么items就会显示在ActionBar上。如果属性值设置为”never”,那么items就会隐藏在overflow menu 里,点击物理菜单键或者over flow menu 这个items可以显示出来。
ActionBar 的items的响应事件需要通过onOptionsItemSelected方法来实现,这个和以前物理菜单键的响应事件的处理机制相同。
如果ActionBar的items是通过ActionView 或者ActionProvider来实现,那么items的响应事件则由具体的ActionView以及ActionProvider来实现。