gpt4 book ai didi

android - 在 DrawerLayout 中激活主要内容区域

转载 作者:太空宇宙 更新时间:2023-11-03 11:58:21 25 4
gpt4 key购买 nike

如何在抽屉打开时激活主要内容区域。目前,如果单击主要内容区域,抽屉将关闭然后触摸事件将被删除,我想捕获该触摸事件并将其传递给主要内容区域。

最佳答案

您需要创建自定义 DrawerLayout 和@overide onInterceptTouchEvent。然后您可以创建一些方法来注册抽屉 View (如 setDrawerViewWithoutIntercepting),打开时可以使用(单击)主要内容。你应该在你的 Activity/fragment 中调用这个方法,这个 DrawerLayout 在哪里使用。

OnInterceptTouchEvent 将返回 false,以防已注册的抽屉 View 打开并且触摸位于抽屉 View 区域之外。这意味着所有功能都保持不变(例如使用滑动关闭抽屉 View 等)

这只是一个例子,有待改进,希望对您有所帮助。

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;
}

关于android - 在 DrawerLayout 中激活主要内容区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18743124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com