我的主要活动有一个NavigationDrawer,在一个实例中我显示了一个片段,“汉堡菜单”变成了一个箭头。
当使用此
显示该片段时,我禁用了通过滑动打开抽屉的功能mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
它工作正常但现在问题是用户仍然可以通过单击主页按钮“箭头”打开抽屉。我希望箭头作为后退按钮而不打开抽屉,这样我怎样才能阻止抽屉打开?
答案 0 :(得分:6)
我猜您需要在工具栏上使用setNavigationOnClickListener()来覆盖抽屉行为。
喜欢 -
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// logic to decide if drawer open/close, or pop fragment etc
}
});
这可以通过单击图标来防止抽屉打开。但它通过刷卡打开。但是你已经照顾好了。所以这应该有用。
注意仅在通过调用
设置ActionBarDrawerToggle
后才能生效
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout, toolbar, R.string.openDrawer, R.string.closeDrawer){ ...
答案 1 :(得分:1)
把它放在你的活动上:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getId() == android.R.id.home){
doSomething(); //can be a finish()
}
}
mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popStackIfNeeded();
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
mActionBar.setDisplayHomeAsUpEnabled(false);
mDrawerToggle.setDrawerIndicatorEnabled(true);
}
});
答案 2 :(得分:0)
您可以尝试覆盖onOptionsItemSelected检查id android.R.id.home并调用finish()返回到之前的活动。
答案 3 :(得分:0)
尝试覆盖选项项目选择。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home :
// do what you want
return true;
}
return true;
}