S F*_*itz 11 android android-nestedscrollview
我有一个NestedScrollView填充了一个垂直的LinearLayout,它本身有一堆各种视图类型的子项:多个TextViews,两个静态GridViews,甚至一个FrameLayout来显示所有这些下面的片段.
当按下后退按钮时,如果用户滚动到某个点以下,而不是完成活动,则调用"scrollToTop"方法:
public static void scrollToTop(final NestedScrollView scrollview) {
new Handler().postDelayed(new Runnable() {
public void run() {
scrollview.fullScroll(NestedScrollView.FOCUS_UP);
}
}, 200);
}
Run Code Online (Sandbox Code Playgroud)
这适用于我的应用程序的早期版本,该版本位于Play商店中.但现在,在更新我的应用程序以定位Android Oreo(并将支持库更新到版本26.0.2)之后,它似乎从NestedScrollView的原始滚动位置下方开始滚动,而不是滚动到顶部,并停止它的位置.所以它只是看起来像一个奇怪的口吃.然而,在某些位置,它确实滚动到顶部(尽管非常罕见且不一致),而其他位置实际上滚动到底部,出于什么原因我不明白.
我一直在试验视图的可聚焦性,但无济于事.例如,我读到静态GridViews可能会在滚动时中断焦点.我也尝试了各种不同的方法来向上滚动,例如
scrollview.pageScroll(View.FOCUS_UP);
Run Code Online (Sandbox Code Playgroud)
和
scrollview.smoothScrollTo(0,0);
Run Code Online (Sandbox Code Playgroud)
但似乎没有任何效果.这次支持库有什么问题吗?
Nil*_*hod 18
试试这个
添加android:descendantFocusability="blocksDescendants"到LinearLayout内部NestedScrollView,这也
滚动到NestedScrollView 使用顶部
NestedScrollView.scrollTo(0, 0);
Run Code Online (Sandbox Code Playgroud)
编辑
nestedScrollView.post(new Runnable() {
@Override
public void run() {
nestedScrollView.fling(0);
nestedScrollView.smoothScrollTo(0, 0);
}
});
Run Code Online (Sandbox Code Playgroud)
gmk*_*k57 14
更新:
找到更好的解决方案.试试这个组合:
scrollView.fling(0); // Sets mLastScrollerY for next command
scrollView.smoothScrollTo(0, 0); // Starts a scroll itself
Run Code Online (Sandbox Code Playgroud)
看起来像一个黑客,但在我的设备上运行良好(使用支持库26.0.0和27.0.2测试).可用于平滑滚动到任何其他位置.基于这样的想法,问题在于缺少更新mLastScrollerY.
如果它适合您,请留下反馈.
原始答案:
也遇到了这个问题.
NestedScrollView.smoothScrollTo(0, 0)在支持库中工作到25.4.0,从26.0.0到当前27.0.2不起作用.NestedScrollView的内容无关紧要(一些TextView就足够了).
此错误已在Google Issue Tracker上报告 过两次.可以在GitHub上找到重现它的最小项目.
找到两个工作方案:
NestedScrollView.scrollTo(0, 0) (见接受的答案,突然跳)NestedScrollView.fling(-10000) (滚动平滑,但适当的速度值取决于当前位置,设备,所需的滚动时间等)在我的案例中没有必要改变可聚焦性.
小智 5
这段代码对我有用。
scrollView.post {
scrollView.fling(0)
scrollView.fullScroll(ScrollView.FOCUS_UP)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4225 次 |
| 最近记录: |