8

使用cheesesquare - android 支持库示例是否可以使 Header 可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没有任何事情发生滚动时。

4

3 回答 3

4

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

在此处查看错误报告

摘抄

我已经查看了支持CoordinatorLayout/ AppBarLayout/Behavior类等的实现。它们使用默认情况下AppBarLayout定义的行为。AppBarLayout.BehaviorViewOffsetBehavior又延伸又延伸Behavior。基Behavior类有方法onInterceptTouchEvent()and onTouchEvent(),它们都返回 false(意思是“我们不想处理触摸事件”)。这些方法不会被ViewOffsetBehavioror覆盖AppBarLayout.Behavior,这意味着触摸未被处理 - 这就是它什么都不做的原因。

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

视频

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

于 2015-06-26T07:48:36.267 回答
2

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

  <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 中测试它,因为我遇到了另一个问题,即当 recyclerview 到达顶部时会中断(如错误报告中所述)。

于 2015-07-08T15:36:16.677 回答
0

通过在支持库 23.1.1 上对此进行测试,此问题似乎已得到修复。

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

您现在可以在 CollapsingToolbarLayout 中放入任何东西,ImageView、RelativeLayout、TextView,它会按预期滚动。

于 2016-02-03T17:42:01.523 回答