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

来源:互联网 发布:达内 北php 编辑:程序博客网 时间:2024/06/07 01:52

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);    。。。。    }@Overridepublic 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);}
0 0
原创粉丝点击