首页 > 代码库 > ActionBar的定制
ActionBar的定制
在我们开发app时,可以隐藏顶部的ActionBar,然后自己定义一套顶部的布局来代替ActionBar。
但是有时我们又需要用到ActionBar,那么我们该如何定制ActionBar呢?
如果需要改变ActionBar中出现的ActionButton,那么可以在res->menu->main.xml中添加或者修改那些Button的文字或者图标。
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/actionbar_search_icon"
android:showAsAction="ifRoom|collapseActionView"
android:title="@string/action_search"/>
<item
android:id="@+id/action_group_chat"
android:icon="@drawable/menu_group_chat_icon"
android:title="@string/menu_group_chat"/>
<item
android:id="@+id/action_add_friend"
android:icon="@drawable/menu_add_icon"
android:title="@string/menu_addfriend"/>
<item
android:id="@+id/action_scan"
android:icon="@drawable/men_scan_icon"
android:title="@string/menu_scan"/>
<item
android:id="@+id/action_feedback"
android:icon="@drawable/menu_feedback_icon"
android:title="@string/menu_feedback"/>
</menu>
第一个Item是一个Widget,具体的详情可以百度,这里不多做解释。
如果需要隐藏左侧app图标,则可以在布局文件加载后调用以下代码。
getActionBar().setDisplayShowHomeEnabled(false);
如果需要永久显示OverflowButton并且改变点击menu时菜单出现的位置,则可以在布局文件加载后调用以下方法。
private void setOverflowButtonAlways(){
try{
ViewConfiguration config = ViewConfiguration.get(this);
- Field menuKey = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
menuKey.setAccessible(true);
menuKey.setBoolean(config, false);
} catch (Exception e){
e.printStackTrace();
}
- }
如果需要让隐藏的ActionButtion也显示图标,则可以复写onMenuOpened方法。
@Override
public boolean onMenuOpened(int featureId, Menu menu)
{- if (featureId == Window.FEATURE_ACTION_BAR && menu != null){
if (menu.getClass().getSimpleName().equals("MenuBuilder"))
{try
{Method m = menu.getClass().getDeclaredMethod(
"setOptionalIconsVisible", Boolean.TYPE);m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e)
{e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}
如果需要修改OverflowButton的图标,则可以修改style文件。
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:actionOverflowButtonStyle">@style/weixinActionOverflowButtonStyle</item>
</style>
<style name="weixinActionOverflowButtonStyle">
<item name="android:src">@drawable/actionbar_add_icon</item>
</style>
</resources>
注意:如果需要兼容API14以下的版本,则不能直接在默认调用的value目录下的style.xml文件。
来自为知笔记(Wiz)
ActionBar的定制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。