• ScrollView包含其他可scroll的view时保持滑到最顶端


    今天做东西时碰到一个问题。

    ScrollView时包含了普通的layout还有EditText.

    布局如下:

     1 <ScrollView
     2         android:layout_width="match_parent"
     3         android:layout_height="wrap_content"
     4         >
     5         <LinearLayout
     6             android:layout_width="match_parent"
     7             android:layout_height="wrap_content"
     8             android:orientation="vertical"
     9             >
    10             <LinearLayout
    11                 android:layout_width="match_parent"
    12                 android:layout_height="wrap_content"
    13                 >
    14                 <TextView
    15                     android:layout_width="match_parent"
    16                     android:layout_height="50dip"
    17                     android:text="aa"
    18                     />
    19                 </LinearLayout>
    20             <LinearLayout
    21                 android:layout_width="match_parent"
    22                 android:layout_height="wrap_content"
    23                 android:background="@drawable/detail_back"
    24                 >
    25                 <EditText
    26                     android:layout_width="match_parent"
    27                     android:layout_height="wrap_content"
    28                     android:minHeight="600dip"
    29                     android:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    30                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    31                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    32                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    33                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    34                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    35                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    36                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    37                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    38                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    39                     android:background="#00000000"
    40                     android:gravity="top"
    41                     />
    42                 </LinearLayout>
    43             </LinearLayout>
    44         </ScrollView>

    然后显示里ScrollView总是自动向上滑了一点,滑到了EditText的位置,内容没有从最顶开始显示,非常影响使用。

    这是因为EditText获取了焦点,ScrollView自动滑到了焦点位置。

    解决办法1,去除EditText的焦点,EditTex的属性里,在xml里加上(或用代码设置):

    1 android:focusable="false"
    2 android:focusableInTouchMode="false"

    解决办法2,在代码里,调用

    1 new Handler().postDelayed(new Runnable(){
    2 
    3             @Override
    4             public void run() {
    5                 // TODO Auto-generated method stub
    6                 //sv.scrollTo(0, 0);
    7                 scrollview.pageScroll(View.FOCUS_UP);
    8             }}, 10);

    为啥要放handler里咧,因为直接调用没有响应,这是个耗时操作,延迟时间请自行调整。


    推荐使用方法1.

  • 相关阅读:
    新的工作开始
    昨日的世界
    【Drools-开源业务规则引擎】入门实例(含源码)
    【cs229-Lecture7】支持向量机(SVM)
    【2014年12月6日】HR交流会
    【cs229-Lecture5】生成学习算法:1)高斯判别分析(GDA);2)朴素贝叶斯(NB)
    【图算法】Dijkstra算法及变形
    【图算法】综述
    【云迁移论文笔记】A Comparison of On-premise to Cloud Migration Approaches
    【云迁移论文笔记】Cloud Migration Research:A Systematic Review
  • 原文地址:https://www.cnblogs.com/jayceli/p/2691403.html
Copyright © 2020-2023  润新知