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.

原文地址:https://www.cnblogs.com/jayceli/p/2691403.html