如何在Android中禁用/重新启用触摸事件?

时间:2015-09-30 14:33:41

标签: android touch android-view

快速,可能很简单,问题。我有一个视图,其背景是动画,在此期间,我想禁止用户与视图交互。我的观点是FrameLayout,我正在使用onTouchEvent()捕获触摸事件。我尝试过的解决方案:

1)首先是setOnTouchListener(null),然后是setOnTouchListener(this)。问题是,我的视图只调用onTouchEvent(MotionEvent),而不是onTouch(View,MotionEvent),因此我无法在那里抽取事件。

2)首先是setEnabled(false),然后是setEnabled(true)。源代码说:可点击的禁用视图仍会消耗触摸事件,它只是不响应它们。问题是,MotionEvents仍然在onTouchEvent()中通过。

3)requestDisallowInterceptTouchEvent(false),然后是(true)。这只处理来自父母的触摸事件。

我正在使用的解决方案是使用布尔变量isAnimating,并在onTouchEvent()中检查它的值。我宁愿不这样做,因为它对我来说看起来很难看,我宁愿使用API​​而不是重新发明轮子,sooo ......任何人都有任何想法?谢谢。

2 个答案:

答案 0 :(得分:0)

尝试: setFocusable()setFocusableInTouchMode()

答案 1 :(得分:0)

尝试:

In [50]: np.array(list("1234567890"),dtype=int)
Out[50]: array([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])