我对Nexus 5x(7.1.2)和Google Pixel(7.1.1)上Nested ScrollView的抛出有一个奇怪的问题。在其他操作系统版本上,它工作正常。
有时在抬起手指后,动画会立即停止。它卡住了,接下来的几次投掷可能也会停止。为了复制它,你需要上下投掷几次。
在日志中,这些投掷在速度、方向等方面看起来几乎相同,所以我找不到这个错误的真正原因。
此外,<code>NestedScrollView</code>不一定需要在<code>CoordinatorLayout</code〕内部,它也可以完全没有<code>巢式ScrollingChild</code>。
例如,以下< code>NestedScrollView子级之一会重现此错误:
1)LinearLayout
填充TextViews
2)WebView
3) LinearLayout
填充了RecyclerViews
。
我知道RecyclerView
和CoordinatorLayout
内部的行为可能存在问题,但这并不相关。所以请不要提任何
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>
根据动画滚动手势训练指南,在使用mScroller后,重写computeScroll()。computeScrollOffset()来计算滚动视图的正确偏移量,我们需要使用:
ViewCompat.postInvalidateOnAnimation(this);
动画下一个滚动。但是,在NestedScrollView视图中,computeScroll()看起来像这样:
public void computeScroll() {
if (mScroller.computeScrollOffset()) {
...
}
}
它不请求下一个滚动动画!这意味着在使用mScroller.fling(…)后,computeScroll()方法有时只会被调用一次,并且view不会继续抛出。
为了解决这个问题,我尝试通过以下方式替换computeScroll:
public void computeScroll(){
if(mScroller.computeScrollOffset()){
...
ViewCompat.postInvalidateOnAnimation(this);
}
}
这听起来可能不是一个好的解决方案,但它目前工作得很好。
NestedScrollView的最新版本添加了ViewCompat.postInvalidateOn动画(this)。
因此,这显然是NestedScrollView中的一个错误。我已经对此做了变通,但仍在等待谷歌方面的适当修复。
https://github.com/Dimezis/FlingableNestedScrollView/
编辑:
似乎该问题已在支持库26.0.0-beta2中修复
https://chris.banes.me/2017/06/09/carry-on-scrolling/
编辑2:虽然滚动现在工作得很好,但在我的应用程序中,我可以不断地再现这bug:
https://issuetracker.google.com/issues/37051723
如果有人也遇到它,您可以在提到的线程中找到解决html" target="_blank">方法。
问题内容: 我有以下代码: 但是,它引发此错误: 谁能告诉我为什么会这样吗? 问题答案: 我相信这是因为相对的路径。“ ../”被认为是恶意的。首先解析本地路径,然后调用。您可以事先解析路径。
我有这个代码: 但是,它会抛出以下错误: 有人能告诉我为什么会这样吗?
当RecycerView有足够的内容可以滚动时,页面看起来很好。但是,当RecycerView为空或没有足够的内容可滚动时,行为是的AppBarLayout子级将继续滚动-这看起来很奇怪。 当NestedScrollView为空时,有没有办法停止AppBarLayout子滚动?
我正在使用mime类型为“video/avc”的对预览数据进行编码,并将编码数据(仅视频,无音频)传递给。muxer似乎运行良好,并创建了一个大小合理的输出文件(即,记录的时间越长,输出文件越大)。但是,当我试图停止多路复用器时,会出现“无法停止多路复用器”错误: 在失败的停止之前,有一些可疑的MPEG4Writer日志消息: 有什么线索导致这一切吗?不确定你还需要什么信息。
我正在使用下面的aws cloudformation模板来启动一个自动缩放组,当我尝试运行cfn init时,它抛出了一个python错误。我已经想尽一切办法来解决这个问题,但现在我完全被难倒了。我得到的错误是: 这是我的云形成模板: 在正确的方向上提供任何帮助或指导都将是了不起的。我尝试过使用不同版本的aws cfn引导,但它们都给了我相同的问题。
当我尝试使用JQuery POST向服务器发送数据时,我得到以下错误。 我做错了什么? 未捕获的TypeError:在e处非法调用(https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js:4:7727)在Ab(https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.