我正在研究一个简单的滑动抽屉组件。它类似于已弃用的 SlidingDrawer 组件。
我正在扩展 LinearLayout (因为这适合我需要做的事情)。我没有做任何花哨的事情,只是一个把手,你可以点击它来打开和关闭抽屉。
我的抽屉包含在 RelativeLayout 中,为了打开和关闭它,它使用 TranslateAnimation 将视图重新定位在屏幕外(仅显示手柄)。
我遇到的问题是,当抽屉关闭时,抽屉内的子组件会在与抽屉打开时相同的屏幕位置响应触摸事件——即使它们显然不在那个位置。
对于我的右侧抽屉来说,这尤其糟糕,因为您应该能够单击手柄的区域不起作用,因为如果抽屉打开,事件正在由位于该位置的组件处理。
这真的很奇怪。我在 onAnimationEnd 事件中的抽屉上尝试了 requestLayout,但这没有帮助(绝望中我也尝试了 invalidate 和 forceLayout - 也没有工作)。我也尝试在父视图上调用 requestLayout。
关于我还能尝试什么的任何想法?