Ben*_*fez 21 android horizontal-scrolling horizontalscrollview
我有一个HorizontalScrollView包含一个RelativeLayout.此布局在XML中为空,并在onCreate中从java填充.
我希望这个滚动视图最初位于中间的某个位置RelativeLayout,这比屏幕大.
我试过mHorizScrollView.scrollTo(offsetX, 0);哪个不起作用.我不知道这有什么问题.
我可以发布代码,但它并不真正相关.重要的是一切都是以编程方式完成的(必须:s),并且HorizontalScrollView必须以编程方式设置初始位置.
谢谢阅读.请告诉我您是否需要更多详细信息,或者这是否不够清楚.
Hal*_*alR 26
我发现,如果你extend在HorizontalScrollView和覆盖onLayout,你可以清晰地滚动,超级调用后onLayout:
MyScrollView extends HorizontalScrollView {
protected void onLayout (boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
this.scrollTo(wherever, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑: 要滚动到开始或结束,您可以使用:
this.fullScroll(HorizontalScrollView.FOCUS_RIGHT/FOCUS_LEFT);
Run Code Online (Sandbox Code Playgroud)
代替
this.scrollTo(wherever, 0);
Run Code Online (Sandbox Code Playgroud)
小智 24
public void autoSmoothScroll() {
final HorizontalScrollView hsv = (HorizontalScrollView) view.findViewById(R.id.horiscroll);
hsv.postDelayed(new Runnable() {
@Override
public void run() {
//hsv.fullScroll(HorizontalScrollView.FOCUS_RIGHT);
hsv.smoothScrollBy(500, 0);
}
},100);
}
Run Code Online (Sandbox Code Playgroud)
Ted*_*opp 16
要测试它是否是计时问题(我认为是这样),而不是在onStart中调用scrollTo(),而是使用调用scrollTo的Runnable调用postDelayed(),延迟为30左右.
更好的方法是使用ViewTreeObserver观察布局.
View interestedInView;
onCreate(){
//Code
//Observe for a layout change
ViewTreeObserver viewTreeObserver = interestedInView.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//REMOVE THE VIEWTREE OBSERVER
//interestedInView is ready for size and position queries because it has been laid out
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31259 次 |
| 最近记录: |