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. Java 容器 LinkedHashMap源码分析2

    一.类签名 LinkedHashMap<K,V>继承自HashMap<K,V>,可知存入的节点key永远是唯一的.可以通过Android的LruCache了解LinkedHas ...

  2. hdu 3664 1~n排列(ai>i ) 为k个数

    http://acm.hdu.edu.cn/showproblem.php?pid=3664 求1~n的排列个数,使得逆序数(ai>i ) 为给定的k. dp[i][j]表示前1~i的排列中,有 ...

  3. HTTP的瓶颈

    http协议,1.0或1.1版本,一个连接智能发送一个请求,通信都是基于请求/响应方式的,请求只能从客户端发起(半双工),发送冗长的首部. 在交互比较频繁的社交网站等,一直轮训带来的网络及服务器压力是 ...

  4. Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization【转】

    https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Proto ...

  5. Tasks遇到的一些坑,关于在子线程中对线程权限认证。

    一般情况下,不应该在执行多线程认证的时候对其子线程进行身份认证,如:A线程的子线程B和子线程C. 当使用 Parallel.ForEach方法时,只有自身线程能够拥有相对应的权限,其子线程权限则为NU ...

  6. 【打印机】argox入门

    立象dx4300打印机调试. 1 环境搭建 1.1 下载软件 登录 http://www.argox.com.cn/Pages/servicedownload.aspx 下载驱动和手册. 1.2 正常 ...

  7. SQL处理数据并发,解决ID自增

    1 创建MaxIdProcess表,由于存储ID的最大值 CREATE TABLE [dbo].[MaxIdProcess]( ,) NOT NULL, --自增ID ) NOT NULL, --存储 ...

  8. (二)Mahapps标题栏

    一.MetroWindow 是什么? 1.默认的MetroWindow由以下几部分组成: (1)标题栏的显示/不显示: ShowTitleBar="False" (2)调节柄并不是 ...

  9. java web service wsdlLocation 不写死 可动态配置

    本解决方案用例Maven 如果项目没用Maven的客园参考扩展一下思路 寻找下适合解决自己项目的方式

  10. pageadmin CMS网站制作教程:模板中的站点数据调用

    pageadmin CMS网站建设教程:模板中的站点数据调用 1.获取当前站点Id,返回int数字 Html.CurrentSiteId() 2.获取当前站点url地址,返回string字符串 Htm ...