DrawerLayout实现侧后,发现了一个问题。点击DrawerLayout的画面,会触发覆盖的底层页面的控件。由此说明点击事件穿透到了底部。但是我只需要触发抽屉布局里的控件,不想触发底层被覆盖的看不见的按钮,由此我想到的时让抽屉页面拦截点击事件即可。
解决方法:在侧滑监听里的onDrawerOpened监听中添加一个配置:
drawerView.setClickable(true);
如此就拦截了点击事件。具体代码如下:
//抽屉布局添加点击监听
myDrawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
//LogUtil.i("onDrawerSlide");
}
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
LogUtil.i("onDrawerOpened");
drawerView.setClickable(true);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
LogUtil.i("onDrawerClosed");
}
@Override
public void onDrawerStateChanged(int newState) {
super.onDrawerStateChanged(newState);
LogUtil.i("onDrawerStateChanged");
}
});