将ScrollView滚动到中间

时间:2013-09-24 13:40:18

标签: android android-scrollview

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

但我刚发现这种方法:

scroll.fullScroll(View.FOCUS_DOWN)

我期待将视图滚动到恰好中间。

任何提示?

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

4 个答案:

答案 0 :(得分:6)

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

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

对于水平滚动视图:

myScrollView.scrollTo(widthOfScrollView/2, 0);

答案 1 :(得分:1)

ViewTreeObserver vto = scroll.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    public void onGlobalLayout() {
         scroll.scrollTo(scroll.getChildAt(0).getWidth()/2, 0);
    }
});

这很有用!

答案 2 :(得分:1)

这是一个古老的问题,但是我发现其他答案对我没有用。以下效果很好。

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 :(得分:0)

在Kotlin中,这是一种简单的方法,而无需使用OnGlobalLayoutListener,其中,WideView是ScrollView中的视图。

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