我正在尝试以编程方式在Android中滚动HorizontalScrollView。
但我刚发现这种方法:
scroll.fullScroll(View.FOCUS_DOWN)
我期待将视图滚动到恰好中间。
任何提示?
我知道有一种滚动到确切位置的方法:
setScrollX
但参数应以某种方式计算,我不知道。
答案 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)} }