作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试禁用特定角度的垂直 ScrollView,但没有成功。
其背后的目标是正确处理嵌套在垂直 ScrollView 中的多个水平 ListView。
我尝试了这个,但它不起作用:
public class VScrollView extends ScrollView {
private GestureDetector mGestureDetector;
View.OnTouchListener mGestureListener;
public VScrollView(Context context) {
super(context);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
setFadingEdgeLength(0);
}
public VScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
setFadingEdgeLength(0);
}
public VScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
setFadingEdgeLength(0);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
}
class YScrollDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (e1 != null && e2 != null) {
double delta_x = (e1.getX() - e2.getX());
double delta_y = (e1.getY() - e2.getY());
double radians = Math.abs(Math.toDegrees(Math.atan2(delta_y, delta_x)));
if (radians > 80 && radians < 100) {
return true;
}
}
return false;
}
}
}
最佳答案
我知道这可能是您不想听到的,但 Google 一直要求我们不要这样做。
引用this SO question这基本上引用了谷歌的说法
You should never use a HorizontalScrollView with a ListView [...]
关于java - 如何仅拦截 ScrollView 中特定角度的运动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17281790/
我是一名优秀的程序员,十分优秀!