当用户触摸列表标题并执行 MotionEvent.ACTION_MOVE
时,我主要尝试禁用 ListView 上的滚动。
如果您想知道为什么要进行这种疯狂的实现? - 我基本上是在我的 listView header 上构建一个自定义搜索栏,它适用于 MotionEvent.ACTION_MOVE
,并且自 View 是 ListView 的标题,在用户离开此自定义标题 View 之前,它不应滚动。
所以我的问题是。
现在我有 2 个 java 类。 Activity (具有此 ListView )和自定义 header (这是一个实现 OnTouchListener
的 View
)。
- 当我的标题 View 被触摸到此 ListView ( Activity )以禁用滚动时,如何传递值?
- 似乎可以通过重写
dispatchTouchEvent
来禁用 ListView 滚动,如 here 所述.由于我的不是自定义 listView,是否可以在 Activity 类本身中禁用?
对不起,我只是在学习,所以请不要介意我的新手。
最佳答案
好吧,我对我问的问题已经有点沉默了,所以我要回答我问题的前半部分。
当我的标题 View 被触摸到此 ListView ( Activity )以禁用滚动时,如何传递值?
我在创建 interface
时得到了解决方案。所以我创建了一个 public static interface
,它有一个 public void headerTouched(Boolean touchEvent);
方法。我的类有 listView
的代码是 implementer
所以它自动覆盖接口(interface)类的这个方法。在这个类中,我创建了一个私有(private)变量(在我的例子中:boolean
),它监听从驱动程序类返回的 boolean 值。我的驱动程序类是具有此接口(interface)对象的 HeaderView,并通过它设置值。为了帮助界面新手,我在下面发布了我的代码。
接口(interface)类
public static interface HeaderTouchListener{
public void headerTouched(Boolean touchEvent);
}
实现类
private boolean headerTouched = false;
public void headerTouched(Boolean touchEvent) {
headerTouched = touchEvent;
}
驱动类
HeaderTouchListener touchListner = new ImplementerClassName();
touchListner.headerTouched(true);
我仍然无法弄清楚如何禁用 ListView 上的滚动。关于它的更多信息,请关注这个问题Set dispatchTouchEvent for List View without creating custom List View class. (for disabling scroll)
关于java - 监听 View (列表标题)onTouch 事件并禁用 ListView 上的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397031/