AndroidUI--ActionBar(Menu)

本文详细介绍了ActionBar的概念及其在Android应用中的作用,包括如何通过代码强制显示ActionBar、在ActionBar中加入菜单的方法,以及处理菜单项的回调函数等。此外,还提供了实现过程中可能遇到的一些问题的解决方案。


1. ActionBar 是什么?

它是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式。在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为action bar能够使应用程序给用户提供一致的界面,并且系统能够很好根据不同的屏幕配置来适应操作栏的外观。你能够用ActionBar的对象的API来控制操作栏的行为和可见性,这些API被添加在Android3.0(API 级别 11)中。

它在位于终端右上角三个点的图标。具体可以看http://blog.csdn.net/xyz_lmn/article/details/8132420

2. 强制打开ActionBar 直接调用下面的函数,该函数是通过反射机制来判断当前设备是否有menu按键,并且强制显示在右上角。

private void getOverflowMenu() { // 显示右上角的actionbar

try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class
.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
}除此之外还得在onMenuOpened中返回true

@Override

public boolean onMenuOpened(int featureId, Menu menu) {
return true;// 返回为true 则显示系统menu
} 除此之外,还要

3. 在Actionbar中加入menu

@Override

public boolean onCreateOptionsMenu(Menu menu) {  

// 该方法只在应用启动的时候才会被调用。要想在程序执行过程中改变menu中的内容可以在onPrepareOptionsMenu(Menu menu)中实现。

MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.more, menu)
;

return true;
}

并且通过onOptionsItemSelected处理选中的菜单项,在onOptionsMenuClosed中处理菜单项关闭之后的逻辑

@Override
public boolean onOptionsItemSelected(MenuItem item) {

return super.onOptionsItemSelected(item);

}

@Override
public void onOptionsMenuClosed(Menu menu) {
}

在这几篇博客中讲解的很详细:

http://blog.csdn.net/yuzhongchun/article/details/8956256

http://android.blog.51cto.com/268543/306424/

4. 其他和Menu的相关问题,可以参考博客

右上角添加菜单:http://blog.csdn.net/tingyuanss/article/details/45840713

如何使用group:http://blog.csdn.net/maojudong/article/details/7010210

ActionBar和Tab显示一行或二行,http://blog.csdn.net/tongcpp/article/details/45826011



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值