防止 NavigationDrawer 在 Home Button Click 上打开
Prevent NavigationDrawer from opening on Home Button Click
我的主 activity 有一个 NavigationDrawer,在一个实例中,我显示了一个片段,"Hamburger menu" 变成了一个箭头。
当该片段显示时,我禁用了通过滑动打开抽屉的功能
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
它工作正常,但现在的问题是用户仍然可以通过单击主页按钮 "Arrow" 打开抽屉。我希望箭头充当后退按钮而不是打开抽屉,那么如何阻止抽屉打开?
把这个放在你的 Activity:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getId() == android.R.id.home){
doSomething(); //can be a finish()
}
}
或者,from this answer
mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popStackIfNeeded();
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
mActionBar.setDisplayHomeAsUpEnabled(false);
mDrawerToggle.setDrawerIndicatorEnabled(true);
}
});
您可以尝试覆盖 onOptionsItemSelected 检查 ID android.R.id.home 并调用 finish() 返回到您之前的 activity.
尝试覆盖选项项 select。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home :
// do what you want
return true;
}
return true;
}
我想您需要在工具栏上使用 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){ ...
我的主 activity 有一个 NavigationDrawer,在一个实例中,我显示了一个片段,"Hamburger menu" 变成了一个箭头。
当该片段显示时,我禁用了通过滑动打开抽屉的功能
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
它工作正常,但现在的问题是用户仍然可以通过单击主页按钮 "Arrow" 打开抽屉。我希望箭头充当后退按钮而不是打开抽屉,那么如何阻止抽屉打开?
把这个放在你的 Activity:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getId() == android.R.id.home){
doSomething(); //can be a finish()
}
}
或者,from this answer
mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popStackIfNeeded();
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
mActionBar.setDisplayHomeAsUpEnabled(false);
mDrawerToggle.setDrawerIndicatorEnabled(true);
}
});
您可以尝试覆盖 onOptionsItemSelected 检查 ID android.R.id.home 并调用 finish() 返回到您之前的 activity.
尝试覆盖选项项 select。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home :
// do what you want
return true;
}
return true;
}
我想您需要在工具栏上使用 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){ ...