android根据tab状态,动态修改actionbar

Activity菜单机制 (与dialog类似)
Activity有一套机制来实现对菜单的管理,方法如下:
1.public boolean onCreateOptionsMenu(Menu menu)
此方法用于初始化菜单,其中menu参数就是即将要显示的Menu实例。
返回true则显示该menu,false 则不显示;
(只会在第一次初始化菜单时调用)
2.public boolean onPrepareOptionsMenu(Menu menu)
在onCreateOptionsMenu执行后,菜单被显示前调用;如果菜单已经被创建,则在菜单显示前被调用。
同样的, 返回true则显示该menu,false 则不显示;
(可以通过此方法动态的改变菜单的状态,比如加载不同的菜单等,在onCreateOptionsMenu调用之后调用)
3.public void onOptionsMenuClosed(Menu menu)
每次菜单被关闭时调用.
(菜单被关闭有三种情形,menu按钮被再次点击、back按钮被点击或者用户选择了某一个菜单项)
4.public boolean onOptionsItemSelected(MenuItem item)
菜单项被点击时调用,也就是菜单项的监听方法。


使用场景:
随着页面tab的选择页面的改变修改actionbar
代码如下:

public void onTabChanged(String tabId) {
    //提示修改actionbar控件
    getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL);
    。。。。
    }

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    //动态修改actionbar
    restoreActionBar(mTabHost.getCurrentTab());
    return super.onPrepareOptionsMenu(menu);
}
//真正修改actionbar的代码
public void restoreActionBar(int i) {
    ActionBar actionBar = getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    View view = null;
    switch (i){
        case 0:
            view = View.inflate(this,R.layout.ax_main_action_bar,null);
            view.findViewById(R.id.main_city_ll).setOnClickListener(this);
            break;
        case 1:
            view = View.inflate(this,R.layout.ax_main_action_bar,null);
            view.findViewById(R.id.main_city_ll).setOnClickListener(this);
            break;
        case 3:
            view = View.inflate(this,R.layout.ax_main_action_bar,null);
            view.findViewById(R.id.main_city_ll).setOnClickListener(this);
            break;
        case 4:
            TextView tv = new TextView(this);
            tv.setText("fadfdas");
            view = tv;
            break;
    }
    actionBar.setCustomView(view);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值