【问题标题】:Touch Trouble ??触摸麻烦??
【发布时间】:2023-04-01 11:30:01
【问题描述】:

我有一个 viewpager,其中一个片段有一个按钮,如果您点击该按钮,则会在侧面产生另外两个按钮,您可以滑动触摸(很像在 android 中拿起电话手势)。

(b1)----------(b2)---------(b3)

b2 触摸产生 b1 和 b3

一切都很好,除了当我尝试水平移动手指时,viewpager 的触摸事件进入画面并发生页面滑动。

我已经能够在没有 viewpager 的活动中实现它,因此没有人可以捕捉到横向手势。

我想到了以下选项

  1. 我试过了

    getActivity().findViewById(R.id.viewpager).onTouchEvent(event)

在按钮的 onTouch 内,但是一旦我超出按钮的边界,我就会在 logcat 中得到“Exeption Dispatching Input Event”。

  1. 试图禁用 viewpager 触摸事件,但我无法做到这一点?

  2. 创建一个可以覆盖该片段的新透明片段或活动,但我无法将触摸事件分派给该活动或片段?

请告诉我其中一个。

  1. 禁用 viewpager 触摸事件?

  2. 将触摸分配给另一个活动或片段?

  3. 如果我可以创建一个有 3 个按钮的自定义视图?

【问题讨论】:

    标签: android android-fragments android-viewpager android-button


    【解决方案1】:

    您可以通过扩展类并从其onInterceptTouch 方法返回false 来轻松禁用ViewPager 的触摸。详情here。希望在那里禁用触摸可以清除您的其他错误。

    【讨论】:

    • 我知道,但我想暂时禁用查看器触摸。当用户按下按钮时,viewpager 应该被禁用,并且在事件 UP 时 viewpager 应该被重新启用。
    • 是否可以动态禁用viewpager上的触摸
    • 将布尔值传递给自定义 ViewPager? if (depressed) { return false; } { else 。 . .您可以在按钮上使用onTouchListener,这将为您提供ACTION_UP/ACTION_DOWN 的方法,以便您可以正确设置布尔值的状态。
    • 1.我不能直接这样做:getActivity().findViewById(R.id.viewpager).onTouchEvent(new MotionEvent().setAction(MotionEvent.ACTION_UP));
    • 我认为您的解决方案应该有效。让我检查并放弃。
    猜你喜欢
    • 2014-11-24
    • 2010-11-11
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多