- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个使用 ViewPager 的项目可以正常工作:我可以通过左右滑动来从一个 View 翻到另一个 View 。
在 ViewPager 的一页上,我有一个自定义 View ,我试图在它下面添加另一个触摸敏感的 View (LinearLayout),它不会“分页”ViewPager。像这样:
<LinearLayout >
<myView />
<LinearLayout> // The touch sensitive region
</LinearLayout>
</LinearLayout>
在我的 View 膨胀并添加到 ViewPager 之后,我调用 setOnTouchListener() 将监听器附加到内部 LinearLayout。监听器返回“真”。
不幸的是,当我在那个 View 中水平移动时,我移动到另一个页面。我得到的事件是:ACTION_DOWN、ACTION_MOVE(n 次)最后是 ACTION_CANCEL。虽然我留在了视野之内。
看起来事件已经上升到 View 层次结构并由 ViewPager 处理。
是否有对此行为的合乎逻辑的解释?
最佳答案
我找到了一个解决方法,即在 Activity 级别拦截事件,覆盖 dispatchTouchEvent()。
在那里,我调用 super.dispatchTouchEvent() 来处理所有事件,除非用户正在触摸我的触敏 View 。我测试用户是否位于正确的页面和正确的位置。在那种情况下,我自己处理事件。
@Override
public boolean dispatchTouchEvent (MotionEvent ev) {
if ( pager.getCurrentPosition()!=0 ) { // Test ViewPager page
super.dispatchTouchEvent(ev);
}
else {
int[] xy = new int[2];
findViewById(R.id.myTouchControl).getLocationOnScreen(xy);
int topOfView = xy[1];
if ( ev.getY() > topOfView ) {
// Custom processing
...
} else {
// Standard processing
super.dispatchTouchEvent(ev);
}
}
return false;
}
关于android - 尽管有 "return true",但触摸事件仍向上泄漏层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8008697/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!