android – NestedScrollView的fullScroll(View.FOCUS_UP)无法正常工作

我有一个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);
}

这适用于我的应用程序的早期版本,该版本位于Play商店中.但是现在,在更新我的应用程序以定位Android Oreo(并将支持库更新到版本26.0.2)之后,它似乎从nestedScrollView的原始滚动位置下方开始滚动,而不是滚动到顶部,并停止它的位置.所以它只是一个奇怪的口吃.然而,在某些位置,它确实滚动到顶部(尽管非常罕见且不一致),而其他位置实际上滚动到底部,出于什么原因我不明白.

我一直在试验视图的可聚焦性,但无济于事.例如,我读到静态GridViews可能会在滚动时中断焦点.我也尝试了各种不同的方法来向上滚动,例如

scrollview.pageScroll(View.FOCUS_UP);

scrollview.smoothScrollTo(0,0);

但似乎没有任何效果.这次支持库有什么问题吗?

解决方法

试试这个

将android:descendantFocusability =“blocksDescendants”添加nestedScrollView内的LinearLayout,这也是

滚动到nestedScrollView的顶部使用此

nestedScrollView.scrollTo(0,0);

编辑

使用fling()smoothScrollTo来收集

nestedScrollView.post(new Runnable() {
   @Override
   public void run() {
      nestedScrollView.fling(0);
      nestedScrollView.smoothScrollTo(0,0);
   }
});

相关文章

Android 通过adb shell命令查看内存,CPU,启动时间,电量等...
Monkey Android app稳定性测试工具之Monkey使用教程 by:授客...
Android 常见adb命令 by:授客 QQ:1033553122 1、 查看所有已...
这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...