Android 折叠工具栏布局图像视图不可滚动
使用是否可以使标题Android 折叠工具栏布局图像视图不可滚动,android,android-support-library,android-scrollview,android-design-library,android-collapsingtoolbarlayout,Android,Android Support Library,Android Scrollview,Android Design Library,Android Collapsingtoolbarlayout,使用是否可以使标题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.
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\u scrollFlags=“scroll”
ImageView
但是当尝试从ImageView
滚动时,什么也没有发生。好的,我在bug报告中做了一些研究,这是设计支持库中已知的bug
节选
我已经查看了支持CoordinatorLayout
/AppBarLayout
/行为
类等的实现。AppBarLayout
默认使用AppBarLayout.Behavior
中定义的行为。这扩展了ViewOffsetBehavior
,反过来又扩展了行为。基本的Behavior
类具有方法onInterceptTouchEvent()
和onTouchEvent()
,这两个方法都返回false(表示“我们不想处理触摸事件”)。这些方法不会被ViewOffsetBehavior
或AppBarLayout.Behavior
覆盖,这意味着触摸未经处理-这就是它什么也不做的原因
第三方开发人员的一个可能的解决方法是扩展AppBarLayout.Behavior
并实现onInterceptTouchEvent()
和onTouchEvent()
并相应地操作应用程序栏
视频
这些显示了当前和预期的行为。这些也来自bug报告
我通过将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到达顶部时(如错误报告中所解释的),会中断“向上”手势。通过在支持库23.1.1上测试,这个问题似乎已经得到了解决
compile 'com.android.support:design:23.1.1'
现在,您可以将任何内容、ImageView、RelativeLayout、TextView放入折叠工具栏布局,它将按预期滚动。我也有同样的问题;然而,这是因为我的图像占据了整个屏幕。所以我无法滚动。我创建了一个变通方法,允许通过设置底部边距进行滚动。但是,这不允许我滚动图像视图谢谢你的回答Christopher。我对它投了赞成票(-:在添加底部图纸布局之前,它是有效的。