我DrawerLayout
在我的应用程序中使用。现在,当我首先按下后退按钮时,它正在关闭DrawerLayout
,需要再次单击后退按钮,然后它将重定向到上一个屏幕。
但我想避免这种DrawerLayout
关闭后退按钮。谁能知道如何防止这种情况?
请向我建议我坚持这一点的方式。
提前致谢。
我DrawerLayout
在我的应用程序中使用。现在,当我首先按下后退按钮时,它正在关闭DrawerLayout
,需要再次单击后退按钮,然后它将重定向到上一个屏幕。
但我想避免这种DrawerLayout
关闭后退按钮。谁能知道如何防止这种情况?
请向我建议我坚持这一点的方式。
提前致谢。
DrawerLayout
拦截默认值onKeyDown
,onKeyUp
因此只需创建扩展自DrawerLayout
并覆盖此方法的新类
像这样的东西:
import android.content.Context;
import android.support.v4.widget.DrawerLayout;
import android.util.AttributeSet;
import android.view.KeyEvent;
public class MyDrawerLayout extends DrawerLayout {
public MyDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyDrawerLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyDrawerLayout(Context context) {
super(context);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return false;
}
return super.onKeyUp(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return false;
}
return super.onKeyDown(keyCode, event);
}
}
只需使抽屉不可聚焦,它就不会再拦截后退按钮:
mDrawerLayout.setFocusable(false);
利用
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
}
或者只是在 keydown 事件中调用 super.onBackPressed() 。
试试这个幻灯片活动你可以轻松处理后退键: https ://github.com/jfeinstein10/SlidingMenu
在单击后退按钮时使用 finish() 函数