解决ScrollView嵌套ListView、GridView默认不停留顶部的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zengd0/article/details/78659462

ScrollView嵌套了ListView或者GridView时,ListView等子View有时候会抢占焦点,导致ScrollView会自动滑动至其已获取焦点的子控件的顶部。

解决方法:

可以手动scrollTo()或者smoothScrollTo()。

觉得上面方法不好玩不爽的话,那就重写ScroolView的computeScrollDeltaToGetChildRectOnScreen方法,将返回值设为0,使ScrollView内布局产生变化时,不会正确滚动到focus child位置。

   /**
     * 解决嵌套listview gridview抢占焦点 显示的问题
     * @param rect
     * @return
     */
    @Override
    protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
        //禁止scrollView内布局变化后自动滚动
        return 0;
    }

猜你喜欢

转载自blog.csdn.net/zengd0/article/details/78659462