gpt4 book ai didi

android - 滑动抽屉上的按钮? - 安卓

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:27 25 4
gpt4 key购买 nike

好的,所以我在我正在构建的 Android 应用程序中的滑动抽屉上实现了一个按钮。唯一的问题是,当我按下按钮时,整个滑动抽屉都被按下并向上滑动。

我知道我可以在 XML 中禁用“按下以向上滑动”,但这似乎不起作用,因为滑动抽屉仍然在没有向上滑动的情况下被按下。

如果我调用 slidingDrawer.lock();功能按钮确实有效,但是滑动抽屉不能向上滑动,甚至不能被按下。

谁有解决这个问题的简单方法?

最佳答案

如果我理解得很好,您已经在 SlidingDrawer handle 上添加了按钮,并且您希望它们在用户按下它们时像按钮一样工作,同时在按下/拖动 handle 时保持标准的 SlidingDrawer 行为?

我刚刚解决了一个类似的问题。

我的 handle 看起来像这样:

Capture of the layout

它由两个按钮和一个中心 TextView 组成,后者将成为真正的句柄(作为标准 SlidingDrawer 句柄 react )。

为了使按钮独立于 SlidingDrawer 工作,我在标准 SlidingDrawer.java 类的 onInterceptTouchEvent 方法中更改了一些源代码(从 android 代码源复制粘贴源文件):

public boolean onInterceptTouchEvent(MotionEvent event) {
//...
final Rect frame = mFrame;
final View handle = mHandle;

// original behaviour
//mHandle.getDrawingRect(frame);

// New code
View trackHandle = mTrackHandle;
// set the rect frame to the mTrackHandle view borders instead of the hole handle view

// getParent() => The right and left are valid, but we need to get the parent top and bottom to have absolute values (in screen)
frame.set(trackHandle.getLeft(), ((ViewGroup) trackHandle.getParent()).getTop(), trackHandle.getRight(), ((ViewGroup) trackHandle.getParent()).getBottom());



if (!mTracking && !frame.contains((int) x, (int) y)) {
return false;
}
//...
}

我还为 mTrackHandle 属性添加了一个 setter,以便在 Activity 创建期间设置要使用的真实 hanlde:

protected void onCreate(Bundle savedInstanceState) {
//...
mSlidingDrawer.setTrackHandle((View) findViewById(R.id.menu_handle_TextView_Title));
//...
}

之后,您可以在两个按钮上设置标准监听器。它们会像魅力一样发挥作用。

关于android - 滑动抽屉上的按钮? - 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711835/

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