pez*_*pez 23 navigation android navigation-drawer
我已经按照谷歌的官方开发教程在这里创建抽屉式导航.
目前,一切正常,除非用户使用Android在屏幕底部提供的本机后退按钮(以及主页和最近的应用程序按钮).如果用户使用此本机后退按钮导航回来,导航抽屉仍将打开.如果用户使用ActionBar导航回来,导航抽屉将像我希望的那样关闭.
我的代码几乎与官方教程完全相同,除了我如何处理用户在抽屉上选择项目:
mDrawerList.setOnItemClickListener(new ListView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView parent, View view, int position, long id)
{
switch(position)
{
case 0:
{
Intent intent = new Intent(MainActivity.this, NextActivity.class);
startActivity(intent);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
当用户使用本机后退按钮导航回来时,如何关闭导航抽屉?任何建议表示赞赏 谢谢!
mt0*_*t0s 60
你必须覆盖onBackPressed().来自文档:
当活动检测到用户按下后退键时调用.默认实现只是完成当前活动,但您可以覆盖它以执行您想要的任何操作.
所以你可以得到这样的代码:
@Override
public void onBackPressed() {
if (this.drawerLayout.isDrawerOpen(GravityCompat.START)) {
this.drawerLayout.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
Run Code Online (Sandbox Code Playgroud)
如果打开,此方法将关闭它,否则将回退到默认行为.
qaz*_*sab 10
您需要覆盖onBackPressed()活动并检查导航抽屉打开的情况.如果它是打开的,则关闭它,否则执行正常的反压方法.这里有一些代码与一些伪代码混合来帮助你:
@Override
public void onBackPressed(){
if(drawer.isDrawerOpen()){ //replace this with actual function which returns if the drawer is open
drawer.close(); // replace this with actual function which closes drawer
}
else{
super.onBackPressed();
}
}
Run Code Online (Sandbox Code Playgroud)
要替换抽屉文档中的伪代码外观.我知道这两种方法都存在.
这是您问题的替代解决方案。
@Override
public void onBackPressed(){
if(drawerLayout.isDrawerOpen(navigationView)){
drawerLayout.closeDrawer(navigationView);
}else {
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25056 次 |
| 最近记录: |