CollapsingToolbarLayout中的ImageView无法滚动。

8

使用cheesesquare-Android支持库示例,能否使标题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中,并且还在ImageView添加了app:layout_scrollFlags="scroll",但尝试从ImageView滚动时没有任何反应。


我有同样的问题;然而,这是因为我的图像填满了整个屏幕。所以我无法滚动。我创建了一个解决方法,通过设置底部边距来允许滚动。然而,这不允许我滚动ImageView。 - Christopher Rucinski
3个回答

4

好的,我在错误报告中进行了一些研究,这是设计支持库中已知的错误

在此处查看错误报告

摘录

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

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

视频

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


谢谢你的回答Christopher。我投了一票(-: - royB

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>

但是我还没有在生产环境中测试过它,因为我遇到了另一个问题,即当RecyclerView到达顶部时,向上滑动手势会被打断(如错误报告中所述)。


0

从在支持库23.1.1上测试中,这个问题似乎已经得到了解决。

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

现在您可以将任何内容放入CollapsingToolbarLayout中,包括ImageView、RelativeLayout和TextView,并且它们会按预期滚动。


只要不添加底部表格布局,它就能正常工作。https://dev59.com/EVoU5IYBdhLWcg3w7aGP#36968467 - traninho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接