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.

你可能感兴趣的:(scrollview)