最近想在项目中使用ActionBarSherlock这个lib,众所周知actionbar是android3.0以后出的一个新特性,是android上面的一大亮点,使用者很多,但是为了适配android3.0以前的版本的手机,我们使用了这个包,这个包在内部做了判断,如果手机是3.0以上的android系统会自动使用系统自带的方法,如果是3.0以下的则会使用自己的方法。
(之前有写成4.0 笔误 致歉)
现在android support v7里面的兼容包已经支持了ActionBar在2.X上面使用 毕竟是亲生的还是推荐
使用ActionBarSherlock的activity必须要extend SherlockActivity,这是activity的一个子类
ActionBarSherlock默认主题
ActionBarSherlock默认有三种主题
- R.style.Theme_Sherlock,
- R.style.Theme_Sherlock_Light
- R.style.Theme_Sherlock_Light_DarkActionBar
你必须在setContentView前setTheme 否则会报错
配置背景
ActionBarSherlock中可以使用下面代码设置背景
getSupportActionBar().setBackgroundDrawable
(getResources().getDrawable(R.drawable.ab_bg_black));
这样可以给actionbar设置一个图片背景,但很多时候我们需要一个颜色作为背景,可以使用下面代码
<resources>
<drawable name="ab_bg_black">#aa000000</drawable>
</resources>
ActionMode
ActionMode包括ActionMode的事件回调函数ActionMode.Callback
在ActionMode.Callback中onCreateActionMode创建ActionMode,
onActionItemClicked处理ActionMode的点击事件
自定义CustomNavigation
可以自定义一个View然后使用下面方式使用
getSupportActionBar().setCustomView(customNav);
getSupportActionBar().setDisplayShowCustomEnabled(true);
SearchView
在onCreateOptionsMenu中使用一下代码
SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());
searchView.setQueryHint("Search for countries…");
menu.add("Search")
.setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.abs__ic_search)
.setActionView(searchView)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
Spilit
在清单文件中配置android:uiOptions=”splitActionBarWhenNarrow”可以使菜单显示在底部
注意 如果你的项目引用了lib后报错 可以检查下是不是support-v4这个包冲突了 我的是删除了自己项目中的这个包后可以了