有这样一个需求,需要当其中一个HorizontalScrollView滚动的时候另一个HorizontalScrollView也跟着滚动,所以才有了这个类:
用法:
scrollView0=(SyncHorizontalScrollView )findViewById(R.id.scrollView0);
scrollView1=(SyncHorizontalScrollView )findViewById(R.id.scrollView1);
scrollView0.setScrollView(scrollView1);
scrollView1.setScrollView(scrollView0);
这样其中一个滚动时另一个也跟着滚动了。
水平滚动解决了,那竖直滚动的ScrollView也类似的写法。
还有一个问题:
如何让HorizontalScrollView总是停留在几个固定的位置?
比如HorizontalScrollView滚动到112位置的时候,需要判断它离100近还是200近,如果离100近就接着滚动到100的位置,否则滚动到200的位置。如何解决?
HorizontalScrollView可以解决Tab过多的问题
网上大多都是用Gallery来模拟TabHost 但是自己实在是懒 就没这么做 一种可以凑合着用的简单做法,只需要吧layout改一下即可:
扩展HorizontalScrollView实现整个屏幕滚动
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=148434&fromuid=30206
- package
com.ql.view; -
- import
android.content.Context; - import
android.util.AttributeSet; - import
android.view.View; - import
android.widget.HorizontalScrollView; -
- public
class SyncHorizontalScrollView extends HorizontalScrollView{ -
private View mView; -
public SyncHorizontalScrollView (Context context) { -
super(context); -
// TODO Auto-generated constructor stub -
} -
public SyncHorizontalScrollView (Context context, AttributeSet attrs) { -
super(context, attrs); -
// TODO Auto-generated constructor stub -
} -
-
protected void onScrollChanged(int l, int t, int oldl, int oldt) { -
super.onScrollChanged(l, t, oldl, oldt); -
if(mView!=null){ -
mView.scrollTo(l, t); -
} -
} -
-
public void setScrollView(View view){ -
mView = view; -
} -
- }
用法:
scrollView0=(SyncHorizontalScrollView
scrollView1=(SyncHorizontalScrollView
scrollView0.setScrollView(scrollView1);
scrollView1.setScrollView(scrollView0);
这样其中一个滚动时另一个也跟着滚动了。
水平滚动解决了,那竖直滚动的ScrollView也类似的写法。
还有一个问题:
如何让HorizontalScrollView总是停留在几个固定的位置?
比如HorizontalScrollView滚动到112位置的时候,需要判断它离100近还是200近,如果离100近就接着滚动到100的位置,否则滚动到200的位置。如何解决?
HorizontalScrollView可以解决Tab过多的问题
网上大多都是用Gallery来模拟TabHost 但是自己实在是懒 就没这么做 一种可以凑合着用的简单做法,只需要吧layout改一下即可:
Xml代码
在TabWidget外面加上HorizontalScrollView即可。 不过 这样有个问题 宽度貌似改不了了 即使你只有一个tab 它并不会fill_parent 还是原来的宽度。(试试设置HorizontalScrollView的android:fillViewport="true") 但是 如果很多tab的话 还是好使的。 " quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
![让两个HorizontalScrollView联动 收藏代码](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
- <?xml
version="1.0" encoding="utf-8"?> - <TabHost
xmlns:android="http://schemas.android.com/apk/res/android" -
android:id="@android:id/tabhost" -
android:layout_width="fill_parent" -
android:layout_height="fill_parent" -
android:background="#001629"> -
<HorizontalScrollView -
android:layout_width="fill_parent" -
android:layout_height="wrap_content"> -
<TabWidget android:id="@android:id/tabs" -
android:layout_width="fill_parent" -
android:layout_height="wrap_content"/> -
</HorizontalScrollView> -
<FrameLayout android:id="@android:id/tabcontent" -
android:layout_width="fill_parent" -
android:layout_height="wrap_content" -
android:paddingTop="95px"> -
-
</FrameLayout> - </TabHost>
- 在TabWidget外面加上HorizontalScrollView即可。
- 不过
这样有个问题 宽度貌似改不了了 即使你只有一个tab 它并不会fill_parent 还是原来的宽度。(试试设置HorizontalScrollView的android:fillViewport="true") - 但是
如果很多tab的话 还是好使的。
扩展HorizontalScrollView实现整个屏幕滚动
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=148434&fromuid=30206