如何让scrollView每次滚动指定的距离,求大神帮忙
展开全部
------解决思路----------------------
scrollview 大神
首先要监听ScrollView中手指触摸的事件并截获该事件,不让ScrollView响应它(即不能滚动)。
判断是向上还是向下滚动,然后手动实现滚动,滚动的距离可以手动设置(如一个childView的高度),可以使用scrollTo(x, y),scrollBy(x, y),smoothScrollBy(dx, dy),smoothScrollTo(dx, dy)方法实现滚动。
请大神帮忙p
scroll
------解决思路----------------------
scrollview
scrollto的方法放在scrollview内部的前端运行 也许能快些
scroll lock
------解决思路----------------------
pager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
mPager.getParent().requestDisallowInterceptTouchEvent(true);
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
------解决思路----------------------
因为,如果根据scrollview1的delegate方法设置scrollview2的contentoffset。设置scorllview2的contentoffset时候会调用scrollview2的delegate方法,而scrollview1又要根据scrollview2同步。所以scrollview2的delegate方法又要根据scrollview2的contentoffset设置scrollview1的contentoffset。如此造成了无限循环。我是用了一个“假同步”,首先我在每个scorllview上放了一个uiview,大小是scrollview的contentsize。然后把scrollview的内容放在了那个uiview上。移动其中一个scrollview时,调整另外的scrollview上的uiview的frame即可。
更多相关内容可参考资料http://www.viiboo.cn
scrollview 大神
首先要监听ScrollView中手指触摸的事件并截获该事件,不让ScrollView响应它(即不能滚动)。
判断是向上还是向下滚动,然后手动实现滚动,滚动的距离可以手动设置(如一个childView的高度),可以使用scrollTo(x, y),scrollBy(x, y),smoothScrollBy(dx, dy),smoothScrollTo(dx, dy)方法实现滚动。
请大神帮忙p
scroll
------解决思路----------------------
scrollview
scrollto的方法放在scrollview内部的前端运行 也许能快些
scroll lock
------解决思路----------------------
pager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
mPager.getParent().requestDisallowInterceptTouchEvent(true);
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
------解决思路----------------------
因为,如果根据scrollview1的delegate方法设置scrollview2的contentoffset。设置scorllview2的contentoffset时候会调用scrollview2的delegate方法,而scrollview1又要根据scrollview2同步。所以scrollview2的delegate方法又要根据scrollview2的contentoffset设置scrollview1的contentoffset。如此造成了无限循环。我是用了一个“假同步”,首先我在每个scorllview上放了一个uiview,大小是scrollview的contentsize。然后把scrollview的内容放在了那个uiview上。移动其中一个scrollview时,调整另外的scrollview上的uiview的frame即可。
更多相关内容可参考资料http://www.viiboo.cn
2018-06-28 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
CGPoint contentOffset = scrollView.contentOffset;
[scrollView setContentOffset:CGPointMake(contentOffset.x + X, contentOffset.y + Y) animated:YES];
其中X和Y分别是x轴和y轴滚动的距离。
祝你愉快,满意请采纳哦
[scrollView setContentOffset:CGPointMake(contentOffset.x + X, contentOffset.y + Y) animated:YES];
其中X和Y分别是x轴和y轴滚动的距离。
祝你愉快,满意请采纳哦
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-08-22 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
1、ScrollView 的滚动条默认置顶,若想设置它的位置,可以使用mScrollView.smoothScrollTo(x,y)方法,可达到效果。
2、crollTo方法可以调整view的显示位置。在需要的地方调用以下方法即可。
3、scroll表示外层的view,inner表示内层的view,其余内容都在inner里。
注意,方法中开一个新线程是必要的。否则在数据更新导致换行时getMeasuredHeight方法并不是最新的高度。
public static void scrollToBottom(final View scroll, final View inner) {
Handler mHandler = new Handler();
mHandler.post(new Runnable() {
public void run() {
if (scroll == null || inner == null) {
return;
}
int offset = inner.getMeasuredHeight() - scroll.getHeight();
if (offset < 0) {
offset = 0;
}
scroll.scrollTo(0, offset);
}
});
}
2、crollTo方法可以调整view的显示位置。在需要的地方调用以下方法即可。
3、scroll表示外层的view,inner表示内层的view,其余内容都在inner里。
注意,方法中开一个新线程是必要的。否则在数据更新导致换行时getMeasuredHeight方法并不是最新的高度。
public static void scrollToBottom(final View scroll, final View inner) {
Handler mHandler = new Handler();
mHandler.post(new Runnable() {
public void run() {
if (scroll == null || inner == null) {
return;
}
int offset = inner.getMeasuredHeight() - scroll.getHeight();
if (offset < 0) {
offset = 0;
}
scroll.scrollTo(0, offset);
}
});
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询