我正在制作一个有很多ImageView
的应用程序,我需要在其中一些附加一个触摸监听器。在这样做的时候,我遇到了一个问题。如果指针在ImageView
与触摸监听器连接的位置按住,并且即将产生滚动事件,则在w/c中View
s和ScrollView
之间似乎存在战斗场景,事件实际上发生在w/c中,事件应该属于w/c。屏幕以快速的速度滚动,然后返回第一个指针被触摸的地方,所以这意味着这是一个不想要的行为。
在ImageView
中设置onTouchListener
会使滚动不舒服和不需要,我如何防止ImageView
在滚动时接收触摸事件?
部分代码
: act_map_view.xml
<?xml version="1.0" encoding="utf-8"?>
<com.nkraft.mobiletomblocator.CustomVScroll
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/vScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none" >
<com.nkraft.mobiletomblocator.CustomHScroll
android:id="@+id/hScroll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none" >
<com.nkraft.mobiletomblocator.CustomGridLayout
android:id="@+id/map_grid"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</com.nkraft.mobiletomblocator.CustomGridLayout>
</com.nkraft.mobiletomblocator.CustomHScroll>
</com.nkraft.mobiletomblocator.CustomVScroll>
指出:
-
GridLayout
在运行时被ImageView
s填充。 - 我定制了水平和垂直的
ScrollView
,这样我可以同时在两个方向上滚动,即对角线滚动
从我提到的笔记中,我从我目前面临的问题中找到了线索。我认为这个问题在标准的android滚动条实现之前就已经被考虑过了。发生这种情况的主要原因是我扩展了滚动条的类,并完全替换了它的默认行为。所以为了达到我想要的效果(带对角线滚动的滚动条),我遵循这篇文章,用TwoDScrollView
替换了我的垂直和水平滚动视图,也感谢这篇文章指导我。