我正在尝试以编程方式在 Android 中滚动 HorizontalScrollView。
但是我刚刚找到了这个方法:
scroll.fullScroll(View.FOCUS_DOWN)
我期待着将视图滚动到正中间。
任何提示?
我知道有一种方法可以滚动到确切位置:
setScrollX
但是应该以某种我不知道的方式计算参数。
我正在尝试以编程方式在 Android 中滚动 HorizontalScrollView。
但是我刚刚找到了这个方法:
scroll.fullScroll(View.FOCUS_DOWN)
我期待着将视图滚动到正中间。
任何提示?
我知道有一种方法可以滚动到确切位置:
setScrollX
但是应该以某种我不知道的方式计算参数。
您可以scrollTo
通过将 y 底部坐标除以 2 来使用和滚动它。
myScrollView.scrollTo(0, myScrollView.getBottom()/2);
对于水平滚动视图:
myScrollView.scrollTo(widthOfScrollView/2, 0);
这是一个老问题,但我发现其他答案对我不起作用。以下效果很好。
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)
}
})
ViewTreeObserver vto = scroll.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
scroll.scrollTo(scroll.getChildAt(0).getWidth()/2, 0);
}
});
这是有效的!
这是一个在 Kotlin 中不使用 OnGlobalLayoutListener 的简单方法,其中 wideView 是 ScrollView 中的视图。
wideView.apply { post { scrollView.scrollTo((left + right - scrollView.width) / 2, 0) } }