Android ListView - 在水平移动事件中冻结垂直位置
Android ListView - freeze vertical position on horizontal move event
我遇到了这个奇怪的问题。
我有一个音量控制应用程序。
在我的 ListView 中,我有一些自定义元素,可用于更改特定应用程序的音量。在这个自定义元素中,我有一个 MotionEvents 侦听器,它主要监视 motionEvent.getX() 坐标以计算音量变化。
例如,这是我现在的观点:AppListView
只需触摸一个元素并水平移动手指,彩色线条和数字就会动态变化。
我的问题是当我尝试改变音量并且我也做了一些垂直移动时,应用程序上的事件将被取消,因为发生了滚动事件。
我尝试了很多方法来禁用 ListView 的滚动,但大多数方法只是简单地禁用了所有触摸事件。
如何检测水平移动并在 MotionEvent.ACTION_UP 操作之前禁用滚动?
或
你能给我推荐一个没有 ListView 的解决方案吗?
(ListView 在 SwipeDownRefreshLayout 中。)
谢谢!
好的,我找到了解决办法。
在我的自定义适配器中,我有一个 onTouchListener
,在 onTouch
我刚刚添加了这一行:
view.getParent().requestDisallowInterceptTouchEvent(true);
true
当 ACTION_DOWN
和 false
当 ACTION_UP
我遇到了这个奇怪的问题。 我有一个音量控制应用程序。 在我的 ListView 中,我有一些自定义元素,可用于更改特定应用程序的音量。在这个自定义元素中,我有一个 MotionEvents 侦听器,它主要监视 motionEvent.getX() 坐标以计算音量变化。
例如,这是我现在的观点:AppListView
只需触摸一个元素并水平移动手指,彩色线条和数字就会动态变化。
我的问题是当我尝试改变音量并且我也做了一些垂直移动时,应用程序上的事件将被取消,因为发生了滚动事件。
我尝试了很多方法来禁用 ListView 的滚动,但大多数方法只是简单地禁用了所有触摸事件。
如何检测水平移动并在 MotionEvent.ACTION_UP 操作之前禁用滚动?
或
你能给我推荐一个没有 ListView 的解决方案吗?
(ListView 在 SwipeDownRefreshLayout 中。)
谢谢!
好的,我找到了解决办法。
在我的自定义适配器中,我有一个 onTouchListener
,在 onTouch
我刚刚添加了这一行:
view.getParent().requestDisallowInterceptTouchEvent(true);
true
当 ACTION_DOWN
和 false
当 ACTION_UP