CollapsingToolbarLayout和NestedScrollView不起作用

我想用NestedScrollView实现CollapsingToolbarLayout,它在底部的NestedScrollView中显示TextView,不允许滚动或折叠工具栏。 我已经得到这个与RecyclerView,但不是NestedScrollView。 当我删除app:layout_behavior="@string/appbar_scrolling_view_behavior工具栏崩溃,但NestedScrollView不低于AppBarLayout。任何解决scheme或build议,以解决这个问题?

XML

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Hello" android:textColor="#000" android:textSize="16sp"/> </LinearLayout> </android.support.v4.widget.NestedScrollView> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:id="@+id/backdrop" android:layout_width="match_parent" android:layout_height="134dp" android:background="@color/primary" app:layout_collapseMode="parallax"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout> 

结果

在这里输入图像说明

Solutions Collecting From Web of "CollapsingToolbarLayout和NestedScrollView不起作用"

在AppbarLayout中更改为某个特定的高度。 例:

 android:layout_height="300dp". 

主要的问题是,嵌套的滚动视图没有足够的视图来滚动。 因此,视差效应将不起作用。

这是一个使用NestedScrollView和CollapsingToolbarLayout的工作示例

我有同样的问题,并写了一种快速解决这一点。 假设包含“Hello”标签的LinearLayout绑定到mContainer并且您的Toolbar绑定到mToolbar您可以使用这个:

 private void fixNestedScrollViewScrolling() { final int bottomMargin = getScreenHeight() - mContainer.getHeight() - mToolbar.getHeight(); final FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams( mContainer.getLayoutParams()); layoutParams.setMargins(0, 0, 0, bottomMargin); mContainer.setLayoutParams(layoutParams); } private int getScreenHeight() { final Display display = getWindowManager().getDefaultDisplay(); final Point size = new Point(); display.getSize(size); return size.y; } 

此修复方法在我的Activity onCreate方法中调用:

 @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_single_post); fixNestedScrollViewScrolling(); // some other stuff here ... }