Код для инициализации RecyclerView
private void initRecyclerView() {
layoutManager = new GridLayoutManager(this, spanCount);
mRecyclerRV.setLayoutManager(layoutManager);
mRecyclerRV.addItemDecoration(new GridSpacingItemDecoration(spanCount, (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, spaceInDp, getResources().getDisplayMetrics()) + 1), false));
mRecyclerRV.setNestedScrollingEnabled(false);
mRecyclerRV.setAdapter(mAdapter);
mRecyclerRV.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (!recyclerView.canScrollVertically(-1)
&& RecyclerView.SCROLL_STATE_SETTLING == newState
&& mScrollVerticalDirection
&& mIsAppBarCollapsed) {
mAppBarLayout.setExpanded(true);
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
mScrollVerticalDirection = (dy < 0);
}
});
mRecyclerRV.postDelayed(new Runnable() {
@Override
public void run() {
RecyclerView.ViewHolder holder = mRecyclerRV.findViewHolderForAdapterPosition(1);
if (null != holder) {
holder.itemView.performClick();
}
}
}, 1000);
}
Файл макета находится здесь и использует CoordinatorLayout.
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_local_album_coordinator"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="@color/colorPageBg">
<android.support.design.widget.AppBarLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_local_album_appbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/border_bottom_bg"
android:theme="@style/Wemeet.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/activity_local_album_collapsing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/dp2"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
<android.support.v7.widget.Toolbar
android:id="@+id/local_album_toolbar"
style="@style/WemeetTitlebar"
android:layout_marginStart="-10dp"
android:titleTextColor="@color/colorText33"
app:layout_scrollFlags="scroll"
android:theme="@style/Wemeet.Toolbar">
<TextView
android:id="@+id/comm_toolbar_title"
style="@style/WemeetTitlebar.Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:text="相机胶卷"
android:gravity="center"
android:singleLine="true" />
</android.support.v7.widget.Toolbar>
<LinearLayout
android:layout_gravity="center_horizontal"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_marginTop="@dimen/dp48"
android:layout_height="350dp"
app:layout_scrollFlags="scroll">
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/colorDivider"
android:id="@+id/fg_top_border" />
<com.weiguan.wemeet.basecomm.ui.widget.WemeetVideoView
android:visibility="gone"
android:layout_gravity="center"
android:id="@+id/activity_local_album_preview_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.weiguan.wemeet.basecomm.ui.widget.WemeetVideoView>
<ImageView
android:id="@+id/activity_local_album_preview_iv"
android:layout_gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter" />
</LinearLayout>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/activity_local_album_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.v7.widget.RecyclerView>
</android.support.design.widget.CoordinatorLayout>
Когда AppBarLayout свернут, прокрутка RecyclerView происходит правильно.
Но когда AppBarLayout расширяется, высота RecyclerView не регулируется, и прокрутка появляется ненормально.