CollapsingToolbarLayout ImageView不可滚动

时间:2015-06-08 10:17:20

标签: android android-support-library android-scrollview android-design-library android-collapsingtoolbarlayout

使用cheesesquare - android support library example是否可以使标题ImageView滚动?

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/detail_backdrop_height"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:fitsSystemWindows="true">

    <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"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginStart="48dp"
        app:expandedTitleMarginEnd="64dp">

        <ImageView
            android:id="@+id/backdrop"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:fitsSystemWindows="true"
            app:layout_scrollFlags="scroll" 
            app:layout_collapseMode="parallax" />
            ...
    </android.support.design.widget.CollapsingToolbarLayout>

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">
    ....

注意我已添加android:fillViewport="true"添加到NestedScrollView,并添加 app:layout_scrollFlags="scroll" ImageView但是当试图从ImageView滚动时没有任何反应。

3 个答案:

答案 0 :(得分:4)

好的,我在错误报告中做了一些研究,这是Design Support Library 中的一个已知错误。

Check out the bug report here

摘录

  

我已经看了支持CoordinatorLayout / AppBarLayout / Behavior类等的实现。AppBarLayout使用AppBarLayout.Behavior中定义的行为默认情况下。这扩展了ViewOffsetBehavior,后者又扩展了Behavior。基础Behavior类具有方法onInterceptTouchEvent()onTouchEvent(),两者都返回false(表示“我们不想处理触摸事件”)。这些方法不会被ViewOffsetBehaviorAppBarLayout.Behavior覆盖,这意味着触摸未处理 - 这就是它什么都不做的原因。

     

第三方开发人员可能的解决方法是扩展AppBarLayout.Behavior并实施onInterceptTouchEvent()onTouchEvent()并相应地操纵应用栏。

这些显示了当前和预期的行为。这些也来自错误报告。

答案 1 :(得分:2)

我通过在nestedScrollView中嵌入imageView找到了一种解决方法:

  <android.support.design.widget.AppBarLayout
    android:layout_height="wrap_content"
    android:id="@+id/appbar"
    android:background="@color/transparent"
    android:layout_width="match_parent">
    <android.support.design.widget.CollapsingToolbarLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/transparent"
        app:toolbarId="@+id/toolbar"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">
        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_collapseMode="parallax"
            app:layout_scrollFlags="scroll"
             app:layout_behavior="@string/appbar_scrolling_view_behavior">
            <ImageView
                tools:ignore="UnusedAttribute"
                tools:src="@drawable/placeholder"
                android:id="@+id/imageView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                android:minHeight="200dp"/>
        </android.support.v4.widget.NestedScrollView>
        <android.support.v7.widget.Toolbar
            android:layout_height="?attr/actionBarSize"
            android:id="@+id/toolbar"
            android:elevation="0dp"
            android:layout_width="match_parent"
            app:layout_collapseMode="pin"/>
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

但是我还没有在prod中测试它,因为我遇到了另一个问题,当回收者视图到达顶部时,顶部手势突然中断(如错误报告中所述)。

答案 2 :(得分:0)

通过对支持库23.1.1的测试,这个问题似乎已得到解决。

compile 'com.android.support:design:23.1.1'

您现在可以将任何内容放入您的CollapsingToolbarLayout,ImageView,RelativeLayout,TextView,它将按预期滚动。