在项目中,跳转fragment导致ScrollView自动滚到到嵌套的Listview的位置。
查了一些解决方法
在父布局中比listview先获取界面的焦点
android:focusable="true"
android:focusableInTouchMode="true"
完整代码:
<ScrollView
android:id="@+id/person_sv"
android:background="@color/white"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:background="@color/white"
android:layout_width="fill_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_height="wrap_content">
<ListView
android:id="@+id/person_kecheng_mlv"
android:layout_width="fill_parent"
android:divider="@color/white"
android:dividerHeight="@dimen/chicun_henxiao"
android:layout_height="wrap_content"/>
</LinearLayout>
</ScrollView>
此时跳转fragment时,默认在顶部,但是只要移动了ScrollView,再跳转fragment又会自动滚到到listview。
此时问题的核心是焦点问题,那么是否是跳转fragment时,listview自动获取了焦点,此时又在布局中加入listview禁止获取焦点。
android:focusable="false"
android:focusableInTouchMode="false"
还是没有解决,没有任何效果。
最后在代码中,禁止listview获取焦点,如下
listview.setFocusable(false);
listview.setFocusableInTouchMode(false);
listview.requestFocus();