![](/img/trans.png)
[英]How to open the navigation drawer when button clicks ? without using action bar in android
[英]How to hide action bar button in fragment when Navigation Drawer is open
我使用导航抽屉,对于其中一个片段,我有不同的菜单。 对于打开导航抽屉时的片段,如何隐藏操作栏的按钮? 例如,在图片( http://prntscr.com/7ur712 )上,它是刷新按钮。
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
**setHasOptionsMenu(true);** }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
**inflater.inflate(R.menu.my_menu, menu);**
}
实现ActionBarDrawerToogle以获取导航抽屉的状态。 调用invalidateOptionsMenu();
使菜单在导航抽屉的打开/关闭状态下失效。
稍后根据状态,您可以使用以下方法显示/隐藏导航项:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// inflate menu from xml
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.settings, menu);
if (mState == MENU_HIDDEN)
{
for (int i = 0; i < menu.size(); i++)
menu.getItem(i).setVisible(false);
}
}
更新actionBar按钮的最佳方法是在打开/关闭NavigationDrawer
时调用invalidateOptionsMenu()
。
根据Android培训文档页面,在创建ActionBarDrawerToggle
,您应该覆盖onDrawerClosed
和onDrawerOpened
方法:
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
getActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
另外,在onPrepareOptionsMenu
方法中,您可以检测抽屉是否打开,并加载与抽屉状态相对应的菜单:
/* Called whenever we call invalidateOptionsMenu() */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// If the nav drawer is open, hide action items related to the content view
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
有关更多信息,您可以在此处查看Android开发人员文档: https : //developer.android.com/training/implementing-navigation/nav-drawer.html (参见部分:侦听打开和关闭事件)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.