【问题标题】:Scroll ScrollView to middle滚动 ScrollView 到中间
【发布时间】:2013-09-24 13:40:17
【问题描述】:

我正在尝试以编程方式在 Android 中滚动 Horizo​​ntalScrollView。

但是我刚刚找到了这个方法:

scroll.fullScroll(View.FOCUS_DOWN)

我期待着将视图滚动到正中间。

有什么建议吗?

我知道有一种方法可以滚动到确切位置: setScrollX 但参数应该以某种我不知道的方式计算出来。

【问题讨论】:

    标签: android android-scrollview


    【解决方案1】:

    您可以使用 scrollTo 并通过将 y 底部坐标除以 2 来滚动它。

    myScrollView.scrollTo(0, myScrollView.getBottom()/2);
    

    对于水平滚动视图:

    myScrollView.scrollTo(widthOfScrollView/2, 0);
    

    【讨论】:

    • 我正在寻找Horizo​​ntalScrollView。这是垂直的。
    • @SergiCastellsaguéMillán 您也可以使用 scrollTo 但在 x 坐标上使用 getRight()。有用吗?
    • 没有。这是我的代码HorizontalScrollView scrollViewSplash = (HorizontalScrollView) this.findViewById(R.id.scrollViewSplash); scrollViewSplash.scrollTo(scrollViewSplash.getRight()/2, 0);
    • 可以查看这篇文章stackoverflow.com/questions/7635903/… 并尝试获取滚动视图的宽度。
    【解决方案2】:

    这是一个老问题,但我发现其他答案对我不起作用。以下效果很好。

    val vto = viewTreeObserver
    vto.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
        override fun onGlobalLayout() {
            val maxScroll = scrollView.getChildAt(0).width - scrollView.width
            scrollView.scrollTo(maxScroll / 2, 0)
    
            viewTreeObserver.removeOnGlobalLayoutListener(this)
        }
    })
    

    【讨论】:

      【解决方案3】:
      ViewTreeObserver vto = scroll.getViewTreeObserver();
      vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
          public void onGlobalLayout() {
               scroll.scrollTo(scroll.getChildAt(0).getWidth()/2, 0);
          }
      });
      

      这行得通!

      【讨论】:

        【解决方案4】:

        这是一个在 Kotlin 中不使用 OnGlobalLayoutListener 的简单方法,其中 wideView 是 ScrollView 中的视图。

        wideView.apply { 发布 { scrollView.scrollTo((left + right - scrollView.width) / 2, 0) } }

        【讨论】:

          猜你喜欢
          • 2013-04-17
          • 1970-01-01
          • 2013-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-04
          • 1970-01-01
          相关资源
          最近更新 更多