use*_*986 3 android navigation-drawer drawerlayout
抽屉打开时如何制作活动的主要内容区域.目前,如果点击主要内容区域,抽屉将被关闭,然后触摸事件将被删除,我想抓住该触摸事件并将其传递到主要内容区域.
您需要创建自定义DrawerLayout和@overide onInterceptTouchEvent.然后你可以创建一些注册抽屉视图的方法(比如setDrawerViewWithoutIntercepting),当打开时,可以使用(点击)主要内容.您应该在您的activity/fragment中调用此方法,使用此DrawerLayout.
OnInterceptTouchEvent将返回false,以防打开已注册的抽屉视图并且触摸位于抽屉视图区域之外.这意味着所有功能保持不变(例如使用滑动关闭抽屉视图等)
这只是应该改进的例子,所以我希望它会对你有所帮助.
private View currentDrawerView;
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
boolean result = super.onInterceptTouchEvent(event);
if (currentDrawerView != null && isDrawerOpen(currentDrawerView)) {
DrawerLayout.LayoutParams layoutParams = (DrawerLayout.LayoutParams) currentDrawerView.getLayoutParams();
if (layoutParams.gravity == Gravity.RIGHT) {
if (event.getX() < currentDrawerView.getX()) {
result = false;
}
}
else if (layoutParams.gravity == Gravity.LEFT) {
if (event.getX() > currentDrawerView.getX() + currentDrawerView.getWidth()) {
result = false;
}
}
// ......
};
return result;
}
public void setDrawerViewWithoutIntercepting(View view) {
this.currentDrawerView = view;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2466 次 |
| 最近记录: |