美文网首页
Scrollview 滑动到指定位置

Scrollview 滑动到指定位置

作者: 请叫我姐 | 来源:发表于2018-07-24 15:57 被阅读73次

    背景

    可能存在这样一个需求,滑动列表的时候,需要将正在显示的位置置顶;或者类似京东的购物车,点击降价标签,需要将降价商品推送到最顶部。如果使用scrollview实现,那么需要用两步实现:
    1、获取view在屏幕中的位置 ;
    2、调用scrollview.smoothScrollTo(x,y) api

    实现方式

    1、如果view是Scrollview的子view

    int position = view.getTop();
    scrollview.smoothScrollTo(0,position);
    

    2、view不是Scrollview的子view,会复杂一点

    int[] location = new int[2];
    view.getLocationInWindow(location); `
    int position = location[1] -  yourTitle.getHeight();
    if (position< 0) {
        position= 0;
    }
    scrollview.smoothScrollTo(0,position);
    

    注意使用 getLocationInWindow 还是 getLocationOnScreen 需要看情况而定
    // 获取在当前窗口内的绝对坐标
    View.getLocationInWindow()

    // 获取在整个屏幕内的绝对坐标,注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度。
    View.getLocationOnScreen()

    // 下面一组是获取相对在它父窗口里的坐标。
    View.getLeft() , View.getTop(), View.getBottom(), View.getRight()

    View.getLocationInWindow()和 View.getLocationOnScreen()在window占据全部screen时,返回值相同,不同的典型情况是在Dialog中时。当Dialog出现在屏幕中间时,View.getLocationOnScreen()取得的值要比View.getLocationInWindow()取得的值要大。

    image.png

    可能会遇到获取位置信息为0的情况,给个解决方式
    android 获取位置信息为0

    相关文章

      网友评论

          本文标题:Scrollview 滑动到指定位置

          本文链接:https://www.haomeiwen.com/subject/cvfymftx.html