zoukankan      html  css  js  c++  java
  • 解决Android中,禁止ScrollView内的控件改变之后自动滚动

    转:http://my.oschina.net/cjk035/blog/127445

    最近在做一个项目,上面是一个LinearLayout布局,下面是一个百度地图的MapView控件,MapView控件的高度比较大,导致整个页面的的内容就超出了屏幕的显示区域,于是就在外面套了个scrollview,但新问题出现了,每次进入页面时,由于地图的加载导致scrollview总是自动滚动到了最底部,上面的LinearLayout区域只显示了下面的一部分,为了解决这个问题我用了scrollview.Fling(0)、scrollview.scrollTo(0,0);但都不管用,没想到看似简单的问题却变得如此地紧手,鼓捣了好久才找到最好的解决办法:

    重写scrollview中的如下方法,并将其返回值设为0即可。

    @Override
     protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
      
      return 0;
     }

    转:http://blog.csdn.net/icyfox_bupt/article/details/15026299

    问题:

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

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

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

    解决办法:

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

    [html] view plain copy
     
    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 plain copy
     
    1. android:focusable="true"  
    2. android:focusableInTouchMode="true"   

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

  • 相关阅读:
    1. Two Sum
    100. Same Tree
    101. Symmetric Tree
    103. Binary Tree Zigzag Level Order Traversal
    102. Binary Tree Level Order Traversal
    STL的一些技巧函数使用
    104. Maximum Depth of Binary Tree
    apache开源项目--solr
    apache开源项目--HBase
    apache开源项目--ZooKeeper
  • 原文地址:https://www.cnblogs.com/tmlee/p/5581349.html
Copyright © 2011-2022 走看看