ActionbarSherlockSample,简称abs,是一个主要用来兼容ActionBar的开源项目
https://github.com/JakeWharton/ActionBarSherlock
/* * Copyright (C) 2011 Jake Wharton * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.actionbarsherlock.sample.demos; import android.os.Bundle; import android.widget.TextView; import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.view.MenuItem; public class Simple extends SherlockActivity { @Override protected void onCreate(Bundle savedInstanceState) { setTheme(SampleList.THEME); //Used for theme switching in samples super.onCreate(savedInstanceState); setContentView(R.layout.text); ((TextView)findViewById(R.id.text)).setText(R.string.simple_content); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()==android.R.id.home){ finish(); return true; } return super.onOptionsItemSelected(item); } }
只有一点:android.R.id.home就是点了左上角的<符号,那如何控制<符号的显示呢?
getSupportActionBar().setDisplayHomeAsUpEnabled(true); //getActionBar().setDisplayHomeAsUpEnabled(true);//这个是android自己的设置方法
一些常见api:
1、是否显示actionbar
getSupportActionBar().setDisplayShowTitleEnabled(true)
2、是否显示自定义的view
getSupportActionBar().setDisplayShowCustomEnabled(true); 一般和 getSupportActionBar().setCustomView(R.layout.custom_view);
3、自定义logo
<item name="android:icon">@drawable/action_bar_title_maintab_logo</item> <item name="icon">@drawable/action_bar_title_maintab_logo</item>
4、修改右上角更多按钮下拉框的样式
背景色
<style name="CustomMainPopupMenu" parent="android:Widget.Holo.PopupMenu"> <item name="android:popupBackground">#ffffff</item> </style>
间隔线的高度和颜色
<style name="CustomMainDropDown" parent="Sherlock.__Widget.Holo.ListView"> <item name="android:dividerHeight">1px</item> <item name="android:divider">@color/tab_hot_popumenu_line</item> </style>
字体
<style name="CustomMainPopupMenuTextLarge" parent="TextAppearance.Sherlock.Widget.PopupMenu.Large"> <item name="android:textColor">#546f8a</item> </style> <style name="CustomMainPopupMenuTextSmall" parent="TextAppearance.Sherlock.Widget.PopupMenu.Small"> <item name="android:textColor">#546f8a</item> </style>
使用
<style name="MainActivityTheme" parent="Theme.Sherlock"> <item name="popupMenuStyle">@style/CustomMainPopupMenu</item> <item name="android:popupMenuStyle">@style/CustomMainPopupMenu</item> <item name="dropDownListViewStyle">@style/CustomMainDropDown</item> <item name="android:dropDownListViewStyle">@style/CustomMainDropDown</item> <item name="textAppearanceLargePopupMenu">@style/CustomMainPopupMenuTextLarge</item> <item name="android:textAppearanceLargePopupMenu">@style/CustomMainPopupMenuTextLarge</item> <item name="textAppearanceSmallPopupMenu">@style/CustomMainPopupMenuTextSmall</item> <item name="android:textAppearanceSmallPopupMenu">@style/CustomMainPopupMenuTextSmall</item> </style>
5、屏蔽menu实体键
//忽略实体menu键 private void ignoreMenu(){ try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); if(menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception ex) { ex.printStackTrace(); } }
在Application的onCreate里面 调用 这个 就可以屏蔽menu键,让overflow常显
但是 小米v4 没有成功