动态修改ActionBar Menu的显示

应用场景:

在主Activity中,采用InstrumentedActivity侧边栏的方式,侧边栏的每一项对应一个Fragment,要实现不同的Fragment动态显示与隐藏ActionBar Menu。

处理思路:

在onCreateOptionsMenu()方法中,根据标识flag动态设置MenuItem的显示与隐藏,在切换Fragment 的地方调用:invalidateOptionsMenu()方法重新加载Menu。

@Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        return super.onPrepareOptionsMenu(menu);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.czsm_content, menu);
        MenuItem mi = menu.findItem(R.id.action_czsm);
        if(isShowInfoFlag){
            mi.setVisible(true);
        }else{
            mi.setVisible(false);
        }
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(isShowInfoFlag && !isCheckedCur){
            switch(item.getItemId()){
            case R.id.action_czsm:
                Fragment fragment = null;
                ft = fm.beginTransaction();
                fragment = new  CzsmFragment();
                isCheckedCur = true;//表示当前点击过了
                ft.replace(R.id.content_frame, fragment);
                ft.commit();
                break;
            }
        }

        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
时间: 2024-11-13 16:28:35

动态修改ActionBar Menu的显示的相关文章

用BadgeView在actionbar menu上显示提醒信息

有时候需要在actionbar menu上显示消息个数,所以可以用BadgeView来实现. 实现方法是获取actionbar menuitem的view,然后创建BadgeView.注意,通常只能在Optionsmenu创建完成之后去获取menuitem的view.我们可以在onCreate方法中延时1秒去处理. <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="ht

动态改变actionbar上menu的图标

工作中遇到了一个需求是,在滚动的时候让actionbar上的图标进行变色.实现后在这里总结下思路. 一.先在主题中定义好Actionbar的style <style name="AppTheme" parent="BaseTheme"> <item name="actionBarStyle">@style/NAActionBarStyle</item> <item name="actionBar

安卓如何动态修改fragment中的 Menu

1.复写onPrepareOptionsMenu方法 @Override public void onPrepareOptionsMenu(Menu menu) {  menu.clear();//先清除已经建好的menu MenuInflater inflater = getActivity().getMenuInflater(); //根据各种条件,重新设置menu if (isDeleteIconOnActionBar){ inflater.inflate(R.menu.delete_ac

设置ActionBar menu文字的属性

前段时间使用ActionBar 做了一个应用,使用到了support  v7 这个包,这个包比原来的support  v4 要强大的多,这里就不讲书怎么引用support  v7 这个包了 ,进入主题我在ActionBar中要使用一个menu.xml布局文件来展示标题文字,但是menu.xml文件中 没有对文字的属性设置,然后找到,support  v7的style文件,在里面发现一个父类style是Theme.AppCompat.Light.DarkActionBar,然后找到这个style的

【转】【已解决】Android中ActionBar中不显示overflow(就是三个点的那个按钮)--不错

原文网址:http://www.crifan.com/android_actionbar_three_dot_overflow_not_show/ [问题] 折腾: [记录]继续尝试给Android程序的右上角的ActionBar中添加三个点的选项按钮 期间,已经按照官网的教程: Action Bar | Android Developers 去添加代码,增加menu,然后显示在ActionBar中了. 但是遇到的问题是: 对于menu的item,没有指定android:showAsAction

GridView 动态修改Item的LayoutParam导致Item的OnClickListener失效

GridView 动态修改Item的LayoutParam导致Item的OnClickListener失效 项目中为了实现图片的数量以及大小(类似微信图片的单张图片显示,和多张图片显示的大小是不同的)的效果,采用GridView动态修改边界,以及动态修改ImageView的大小的方式.实现效果如下: 单图: 多图 到目前为止,没有遇到什么问题,可是,之后就遇到一个问题,就是在ImageView上设置OnClickListener,第0张图片无法点击的问题. 追踪源码,发现一直运行到: 这个函数的

利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)

原文:利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习) Mono.Cecil是一个强大的MSIL的注入工具,利用它可以实现动态创建程序集,也可以实现拦截器横向切入动态方法,甚至还可以修改已有的程序集,并且它支持多个运行时框架上例如:.net2.0/3.5/4.0,以及silverlight程序 官方地址:http://www.mono-project.com/Cecil 首先,我先假想有一个这样的商业组件,该组件满足了以下条件: 1. 该程序集的代码被混淆过了 2. 该程序

动态修改easyui-datagrid 列

<table id="DataList" title="查询结果" style="width:99%;padding:10px;"></table> ① 隐藏列 $('#DataList').datagrid('hideColumn', 'Columnfield'); ② 动态修改列标题 $('div[class$="Columnfield"] :not(.datagrid-sort-icon)').h

动态修改 NodeJS 程序中的变量值

如果一个 NodeJS 进程正在运行,有办法修改程序中的变量值么?答案是:通过 V8 的 Debugger 接口可以!本文将详细介绍实现步骤. 启动一个 HTTP Server 用简单的 Hello World 做例子吧,不过略作修改.在 global 下放一个变量 message, 然后打印出来: // message content will be modified ! global.message = "hello world!"; var server = require('h