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"> 

让两个HorizontalScrollView联动_xml



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>
  1. 在TabWidget外面加上HorizontalScrollView即可。  
  2. 不过 这样有个问题 宽度貌似改不了了 即使你只有一个tab 它并不会fill_parent 还是原来的宽度。(试试设置HorizontalScrollView的android:fillViewport="true")  
  3. 但是 如果很多tab的话 还是好使的。  





扩展HorizontalScrollView实现整个屏幕滚动 


http://www.eoeandroid.com/forum.php?mod=viewthread&tid=148434&fromuid=30206