今天做东西时碰到一个问题。
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.