我在 Nexus 5x (7.1.2) 和 Google Pixel (7.1.1) 上使用 NestedScrollView 滑动时遇到了奇怪的问题,在其他操作系统版本上它运行正常。
有时候,滑动动画在松开手指后就会停止。它会被卡住,接下来的几次滑动可能也会停止。 为了重现这个问题,您需要多次向上和向下滑动。
在日志中,这些滑动看起来基本相同,包括速度、方向等等,所以我找不到这个错误的真正原因。
此外,NestedScrollView 不一定要在 CoordinatorLayout 内部,它也可以完全没有 NestedScrollingChild。
例如,这个 bug 可以通过以下 NestedScrollView 的子项之一重现:
1)LinearLayout 中填充着 TextViews
2)WebView
3)LinearLayout 中填充着 RecyclerViews。
我知道关于 CoordinatorLayout 中 RecyclerView 和 Behaviours 可能存在的问题,但与此无关。所以请不要提及它们。
recyclerView.getLayoutManager().setAutoMeasureEnabled(true);
recyclerView.setNestedScrollingEnabled(false);
或类似的事情。
代码示例:
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="Put a super long text here"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="Put a super long text here"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>