ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);//在activity title栏的左侧开启一个<按钮,
   // 然后在onOptionsItemSelected(MenuItem menuItem) 里面使用menuItem.getItenmId()判断id是否为android.R.id.home,如果是则finish掉当前的activity
    /**
* 让overflow显示在activity onCreate()里面调用
*/
private void setOverflowShowingAlways() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 设置actionBar可以显示图标
*/
@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) {
}
}
}
return super.onMenuOpened(featureId, menu);
}
never 表示显示在溢出菜单中显示,溢出菜单就三个口竖屏显示的那个。
ifRoom 表示在显示4个或者是4个以上的item的时候会隐藏到溢出菜单里。还有如果界面显示不了了也会在溢出菜单里面显示。
collapseActionView 表示当前的item可以进行合并,他一般都是和ifRoom配合使用,像我们看到的微信的搜索item就是这个原理做的。
always     表示一直在bar上面显示,不管是什么情况下。都显示。不会显示到溢出菜单里面。
withText   表示会显示文字。。在溢出菜单里面显示。。
android:actionViewClass 这个属性就是可以设置一个view在item里面显示。例如搜索view,android.widget.SerachView
android:actionProviderClass 这个属性就可以设置一个provider在item里面显示,例如自定义的provider,com.xxx.SubMenuProvider。自定义的provider里面可以添加子menu.效果类似于微信里面的一个+号点击以后会弹出一些列子菜单。
android:actionLayout 这个属性就可以设置一个布局文件放到item里面显示。
android:orderInCetegory 这个属性就是传入一个整数类型,传入的值越大优先级越低,越容易在溢出菜单里面显示。
import android.content.Context;
import android.util.Log;
import android.view.ActionProvider;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.SubMenu;
import android.view.View; /**
* 为了表示这个Action Provider是有子菜单的,需要重写hasSubMenu()方法并返回true,然后在onPrepareSubMenu通过调用SubMenu的add()方法添加子菜单。
* @author kchang
* @E-mail:kchang244@163.com
*/
public class MyActionProvider extends ActionProvider {
private static final String TAG = MyActionProvider.class.getSimpleName();
public MyActionProvider(Context context) {
super(context);
}
@Override
public View onCreateActionView() {
return null;
} @Override
public void onPrepareSubMenu(SubMenu subMenu) {
subMenu.clear();
subMenu.add("Sub Menu A").setIcon(R.drawable.call).setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Log.d(TAG, "onMenuItemClick() Sub Menu A");
return true;
}
});
subMenu.add("Sub Menu B").setIcon(R.drawable.chat).setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Log.d(TAG, "onMenuItemClick() Sub Menu B");
return true;
}
});
super.onPrepareSubMenu(subMenu);
} @Override
public boolean hasSubMenu() {
return true;
}
}

ActionBar大概就用到这些,如果要用actionBar.Tab那个也很容易不过不是很好用,tab+viewPager

 

Android_ActionBar的更多相关文章

随机推荐

  1. DIV+CSS实战(三)

    一.说明 在上篇博客<DIV+CSS实战(二)>中,实现了头部以及Tab标签卡,下面开始实现内容区域,要实现的效果如下: 二.内容最外层的设计(边框) 给最外层加边框,并且设置高度随着里面 ...

  2. windows开启禁用网卡

    ' 在Windows中实现sudo命令--命令行环境中获取管理员权限 'ShellExecute 方法 '作用: 用于运行一个程序或脚本. '语法 ' .ShellExecute "appl ...

  3. python编码(四)

    一.预备知识 字符集 1, 常用字符集分类 ASCII及其扩展字符集作用:表语英语及西欧语言.位数:ASCII是用7位表示的,能表示128个字符:其扩展使用8位表示,表示256个字符.范围:ASCII ...

  4. 四)mybatis 二级缓存 ehcache 常见问题

    1. java.io.NotSerializableException 94359 [EH_CACHE Async Replication Thread] ERROR n.s.e.d.jgroups. ...

  5. 解决Error creating bean with name 'huayuanjingguanDaoimp' defined in file [D:\apache-tomcat-7.0.52\webapps\landscapings\WEB-INF\classes\com\itheima\landscaping\dao\imp\huayuanjingguanDaoimp.class]: Invo

    问题描述: 10:23:13,585 ERROR ContextLoader:307 - Context initialization failedorg.springframework.beans. ...

  6. 【转】WinRT 中SystemTrigger 构造函数的 SystemTriggerType 参数的解释

    中文版:http://msdn.microsoft.com/library/windows/apps/windows.applicationmodel.background.systemtrigger ...

  7. Redis 慢查询

    Redis 慢查询   许多存储系统提供慢查询日志帮助开发和运维人员定位系统的慢操作.慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阈值就将这条命令的相关信息记录下来Redis提供 ...

  8. Tomcat监听443端口的方法

    当我们需要更安全的访问网站的时候就会选择使用https协议,而https协议默认的端口号为443端口,这就是我们为什么向让Tomcat监听在443端口的原因,因为监控在非80端口和443端口的web服 ...

  9. Windows2012 显示我的电脑删除群集

    rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0 在正常删除Cluster 节点之后,再添加节点时,报“节点已经加入群集”,无法加入,注册表信息删 ...

  10. .net core获取服务器本地IP及Request访问端口

    string str = (Request.HttpContext.Connection.LocalIpAddress.MapToIPv4().ToString() + ":" + ...