今天在做项目的时候,遇到了一个问题,就是要把home在代码中动态显示跟隐藏。现在把方法记录如下
public void removeBackButton() { if (mActionBar == null) { return; } // Remove the back button but continue showing an icon. final int mask = ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME; mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME, mask); mActivity.getActionBar().setHomeButtonEnabled(false); } /* Vanzo:zhangshuli on: Fri, 17 Apr 2015 18:15:31 +0800 */ public void setBackButtonEnable(boolean enable) { if (mActionBar == null) { return; } mActivity.getActionBar().setHomeButtonEnabled(enable); } // End of Vanzo: zhangshuli public void setBackButton() { if (mActionBar == null) { return; } // Show home as up, and show an icon. final int mask = ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME; mActionBar.setDisplayOptions(mask, mask); mActivity.getActionBar().setHomeButtonEnabled(true); }
上面代码中
mActionBar.setDisplayOptions(mask, mask);
就是用来设置home按钮显示的,它的具体用法如下
(1)如果只有一个参数,那么它就是直接设定显示项,
如,
int options = DISPLAY_SHOW_HOME | DISPLAY_USE_LOGO; setDisplayOptions(options);
那么,actionbar就会显示home跟log按钮,也就是,里面添加了谁,谁就显示
(2)如果有两个参数的话
int options = ActionBar.DISPLAY_SHOW_TITLE |ActionBar.DISPLAY_SHOW_HOME ; int mask = ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM; getSupportActionBar().setDisplayOptions(options, mask);
如上代码,这时候actionbar会显示home 跟title,其他的不会显示
也就是只有当options在mask中被设置才能被显示,也就是设置为true。
知识补充:
1.ActionBar默认如果没有做任何设置,会显示出一个箭头(DISPLAY_HOME_AS_UP),一个logo(DISPLAY_SHOW_HOME),标题(DISPLAY_SHOW_TITLE)
2.单独设置某项显示方法如下
getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setDisplayShowCustomEnabled(true); getActionBar().setDisplayShowHomeEnabled(true); getActionBar().setDisplayShowTitleEnabled(true); getActionBar().setDisplayUseLogoEnabled(true);
3.设置各个按钮是否可点击状态
//它好像可以控制home等的点击状态 getActionBar().setHomeButtonEnabled(true);
时间: 2024-10-25 11:58:44