首页 > 代码库 > 解决Android中,禁止ScrollView内的控件改变之后自动滚动

解决Android中,禁止ScrollView内的控件改变之后自动滚动

问题:

最近在写一个程序界面,有一个scrollVIew,其中有一段内容是需要在线加载的。

当内容加载完成后,ScrollView中内容的长度会发生改变,这时ScrollView会自动下滚,如下图所示:


滚动的那一下体验特别不好,所以要防止这种情况。即不论Scrollview中内容如何,都要保持在最上。


解决办法:

先简单写一下我的xml文件的结构:

[html] view plaincopy

  1.  <ScrollView  

  2.         android:id="@+id/scrollView1"  

  3.         android:layout_width="fill_parent"  

  4.         android:layout_height="fill_parent"  

  5.         android:layout_alignParentLeft="true"  

  6.         android:layout_below="@+id/linearLayout2"  

  7.         android:background="@drawable/repeat_bg"  

  8.         android:paddingBottom="5dp" >  

  9.   

  10.         <LinearLayout  

  11.             android:layout_width="match_parent"  

  12.             android:layout_height="match_parent"  

  13.             android:orientation="vertical"  

  14.             android:paddingLeft="10dp"  

  15.             android:paddingRight="10dp"  

  16.             android:focusable="true"  

  17.             android:focusableInTouchMode="true"     

  18.             android:paddingTop="15dp" >  

  19. <!-- 上面这两行是控制scrollview   

  20.             android:focusable="true"  

  21.             android:focusableInTouchMode="true"     

  22. 不自动的关键! !-->  

  23.   

  24.   

  25.             <LinearLayout  

  26.                 android:layout_width="match_parent"  

  27.                 android:layout_height="wrap_content"  

  28.                 android:orientation="vertical" >  

  29.   

  30.                 <ListView  

  31.                     android:id="@+id/lv_gc"  

  32.                     android:layout_marginTop="5dp"  

  33.                     android:layout_width="match_parent"  

  34.                     android:layout_height="20dp"  

  35.                     android:background="#aaffffff"  

  36.                     android:divider="#666"               

  37.                     android:scrollbars="none|vertical" >  

  38.   

  39.                 </ListView>  

  40.   

  41.             </LinearLayout>  

  42.         </LinearLayout>  

  43. </ScrollView>  


如上面代码,我的ScrollView中第一个内容是LinearLayout,下面有一个LinearLayout包裹着的ListView.ListView是长度可变的。

将LinearLayout中加入代码:

[html] view plaincopy

  1. android:focusable="true"  

  2. android:focusableInTouchMode="true"   

问题即可解决,欢迎大家交流。