ScrollView嵌套ViewPager、ListView、RecyclerView,刚打开时自动滚动到底部解决方案
开发中遇到了这样的一个问题,界面最外层是ScrollView,然后里面有嵌套了一个ListView还有其他可以获取焦点的View,然后每次打开界面都会自动滚动到最底部,解决方案如下:
-
获取ScrollView里面一个上层任意view,然后调用如下方法:
view.setFocusable(true);
view.setFocusableInTouchMode(true);
view.requestFocus(); 或者将scrollview包裹的内容设置上以下两个属性
android:focusable=”true”
android:focusableInTouchMode=”true”
如下:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true"/>
</ScrollView
注意
上边的第二种方式,可以解决"刚打开时自动滚动到底部"的问题,但是下面这种情况解决不了:
整个是一个ScrollView,下面嵌了一个ViewPager,每个ViewPager中都是RecyclerView。用了第二种方法后,首次进来的时候ScrollView确实不会自动往下滚动了,但是当左右切换ViewPager的时候,ScrollView会自动滚动到ViewPager的地方。换成第一种方式之后,不会出现该问题。
如果上边还是不行,查看终极解决方案