3

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

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

scroll.fullScroll(View.FOCUS_DOWN)

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

任何提示?

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

4

4 回答 4

7

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

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

对于水平滚动视图:

myScrollView.scrollTo(widthOfScrollView/2, 0);
于 2013-09-24T13:43:58.233 回答
3

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

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)
    }
})
于 2018-08-16T06:42:36.563 回答
1
ViewTreeObserver vto = scroll.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    public void onGlobalLayout() {
         scroll.scrollTo(scroll.getChildAt(0).getWidth()/2, 0);
    }
});

这是有效的!

于 2013-09-25T07:35:46.200 回答
1

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

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

于 2020-06-25T13:51:58.613 回答