1. packagecom.ql.view;
2.
3. importandroid.content.Context;
4. importandroid.util.AttributeSet;
5. importandroid.view.View;
6. importandroid.widget.HorizontalScrollView;
7.
8. publicclassSyncHorizontalScrollView extendsHorizontalScrollView{
9. privateView mView;
10. publicSyncHorizontalScrollView(Context context) {
11. super(context);
12. // TODO Auto-generated constructor stub
13. }
14. publicSyncHorizontalScrollView(Context context, AttributeSet attrs) {
15. super(context, attrs);
16. // TODO Auto-generated constructor stub
17. }
18.
19. protectedvoidonScrollChanged(intl, intt, intoldl, intoldt) {
20. super.onScrollChanged(l, t, oldl, oldt);
21. if(mView!=null){
22. mView.scrollTo(l, t);
23. }
24. }
25.
26. publicvoidsetScrollView(View view){
27. mView = view;
28. }
29.
30. }
用法:
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改一下即可:
在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">
1. <?xmlversion="1.0"encoding="utf-8"?>
2. <TabHostxmlns:android="http://schemas.android.com/apk/res/android"
3. android:id="@android:id/tabhost"
4. android:layout_width="fill_parent"
5. android:layout_height="fill_parent"
6. android:background="#001629">
7. <HorizontalScrollView
8. android:layout_width="fill_parent"
9. android:layout_height="wrap_content">
10. <TabWidgetandroid:id="@android:id/tabs"
11. android:layout_width="fill_parent"
12. android:layout_height="wrap_content"/>
13. </HorizontalScrollView>
14. <FrameLayoutandroid:id="@android:id/tabcontent"
15. android:layout_width="fill_parent"
16. android:layout_height="wrap_content"
17. android:paddingTop="95px">
18.
19. </FrameLayout>
20. </TabHost>
- 在TabWidget外面加上HorizontalScrollView即可。
- 不过 这样有个问题 宽度貌似改不了了 即使你只有一个tab 它并不会fill_parent 还是原来的宽度。(试试设置HorizontalScrollView的android:fillViewport="true")
- 但是 如果很多tab的话 还是好使的。
扩展HorizontalScrollView实现整个屏幕滚动
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=148434&fromuid=30206