相关疑难解决方法(0)

无缝嵌套滚动(Android)

我们都被建议不要使用包含滚动机制的嵌套视图.然而,在最新的Android版本(5.0)中,电话应用程序引起了我的注意,似乎是一个ListView内部ScrollView.

真正引起我兴趣的是滚动机制从无缝切换ScrollViewListView无缝.

请注意,在实际ListView开始滚动之前,选项卡上方的内容将被推出视图.

我自己试过复制这个,但结果不成功.这是我采取的基本方法......

在此输入图像描述

通过单个连续触摸事件(不抬起手指)......

当用户滚动时,ListView慢慢地覆盖了ImageView.一旦ImageView100%覆盖并ListView占据整个屏幕,就ListView开始滚动.

目前,我正在听触摸事件ListView,如果顶部已经达到了,叫requestDisallowInterceptTouchEventListView,即

@Override
public boolean onTouch(View v, MotionEvent event) {
  if (listViewAtTop) {
    v.requestDisallowInterceptTouchEvent(true);
  } else {
    v.requestDisallowInterceptTouchEvent(false);
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)

只有当您抬起手指并继续滚动时,切换滚动上下文才有效.

是否有不同的方法可以达到预期的效果?

android listview

6
推荐指数
3
解决办法
2万
查看次数

Android在NestedScrollView中实现甩尾的问题

我在使用时遇到了一些问题NestedScrollView。我的用例使用2 NestedScrollView,一个父母和一个孩子。我已经重写了父级的onNestedPreScroll方法,有时会在子级之前消耗滚动像素:

@Override
public void onNestedPreScroll(View target, int dx, int dy, int[] consumed) {
    if (dy > 0 && getScrollY() < getScrollRange()) {
        int oldScrollY = getScrollY();
        scrollBy(0, dy);
        consumed[1] = getScrollY() - oldScrollY;
    }
}
Run Code Online (Sandbox Code Playgroud)

我还重写了父母onNestedPreFling在孩子面前吃东西的做法:

@Override
public boolean onNestedPreFling(View target, float velocityX, float velocityY) {
    if (velocityY > 0 && getScrollY() < getScrollRange()) {
        fling((int) velocityY);
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

但是,我注意到当父级消耗了in的整个滚动时onNestedPreScrollonNestedPreFling不会调用父级的滚动。

从我的调查看来,如果父母消耗了整个纸卷,则孩子的反应就像ACTION_MOVE发生了一起deltaY=0 …

android android-support-library

5
推荐指数
0
解决办法
1964
查看次数