ScrollView嵌套其他View和RecycleView,Fragment每次切换界面都会自动滚动到底部
解决方案:
其他View设置可获取焦点,触摸可获取焦点属性
android:focusable="true"
android:focusableInTouchMode="true"
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<cn.bingoogolapple.bgabanner.BGABanner
android:id="@+id/bv_banner"
android:layout_width="match_parent"
android:layout_height="108dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:scaleType="centerCrop"
bind:banner_aspectRatio="3.47"
bind:banner_indicatorGravity="bottom"
bind:banner_pointAutoPlayAble="true"
bind:banner_pointAutoPlayInterval="5000"
bind:banner_pointContainerBackground="@color/transparent"
bind:isVisible="@{viewModel.visibleBanner}" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
bind:adapter="@{adapter}"
bind:isVisible="@{viewModel.visibleProductList}"
bind:itemAnimator="@{null}"
bind:itemBinding="@{viewModel.itemBinding}"
bind:items="@{viewModel.items}"
bind:layoutManager="@{LayoutManagers.grid(2)}" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
focusableInTouchMode:控制视图是否可以在触摸模式下获得焦点的布尔值。如果一个视图设置为true,则该视图可以在单击时获得焦点,并且如果单击另一个未将此属性设置为 true 的视图,仍可以保持焦点。
滑动
binding.scrollView.post(new Runnable() {
@Override
public void run() {
//滑动到顶部
binding.scrollView.fullScroll(ScrollView.FOCUS_UP);
//滑动到底部
binding.scrollView.fullScroll(ScrollView.FOCUS_DOWN);
//滑动到某个位置
int offSetY=100;
binding.scrollView.smoothScrollTo(0, offSetY);
}
});
ScrollView子View高度不能撑满全屏
fillViewport:使得子布局高度和scrollview一样