当前位置:   article > 正文

ScrollView滚动到指定位置

scrollview滚动到指定位置

ScrollView滚动到指定位置

一:问题描述

 最近在项目中遇到一个问题,需要通过点击几个按钮在scrollview中不断切换滚动到指定位置。

二:解决办法

 首先想到的是用ScrollView.scrollTo(x,y)滚动到指定位置,但是调用之后貌似并没有什么用。查资料得知当我们在onCreate()里调用scrollTo(x,y)方法时,activity的ui初始化还未完成,就如在oncreate()里调用View.getHeight()方法得不到正确的数据一样。所以正确的方法应该是通过handler来处理。

private Handler handler = new Handler();

 /**
  * 滑动到指定位置
  */
private void scrollToPosition() {
handler.post(new Runnable() {

    @Override
    public void run() {
    svPersonalInfo.scrollTo(0, llOverBook.getHeight());
    }
});
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

三:相关API

  • scrollTo(scrollX, scrollY)

     这个方法文档中说的是滑动View中的内容,并不是滑动View本身。也就是说当TextView调用这个方法时,改变的只是TextView里面的文字,TextView本身并不改变,不过当把TextView设为全屏,或者背景与父容器相融时看起来好像滑动的是TextView。

     scrollX,scrollY这两个参数指的是相对于原位置的偏移量,可以理解由原位置的坐标减去偏移后的坐标,注意这个便宜后原来的View坐标没变,只是内容位置改变。所以scrollX,scrollY参数的方向与值的正负相反,即scrollX为正,向左便宜,为负数则向右便宜。scrollY正向上,负向下。

  • scrollBy(x, y)

    需要注意的是,scrollTo(scrollX, scrollY)中的参数始终与View做比较,就是说,多次调用此方法时无其他情况下只会调用一次,因为内部做过一次比较scrollX与内部测出来的数据不等的时候才会调用。而scrollBy(x, y)这是每次都与上次比较,也就是说多次调用可以一直移动。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/312711
推荐阅读
相关标签
  

闽ICP备14008679号