【问题标题】:Appbar with views smooth resize on scroll带有视图的 Appbar 在滚动时平滑调整大小
【发布时间】:2021-01-21 01:42:44
【问题描述】:

我想在 recyclerview 滚动时平滑地调整我的 appbar 及其视图的大小。

-----------------
|     Title     |
|_______  ______|
|       ||      |
|_______||______|
|               |
|               |
|               |
-----------------

应该变成

-----------------
|_______  ______|
|_______||______|
|               |
|               |
|               |
-----------------

我正在使用 CoordinatorLayout,因此我尝试使用自定义 Behavior 类调整视图高度 onNestedScroll,但它不会以一种流畅的方式完成,我该怎么办?

编辑:我被要求显示一些代码,实际上我并没有编写太多代码来处理调整大小,但是这里是

@Override
public void onNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull AppBarLayout child, @NonNull View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type) {
    super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, type);

    if (dyConsumed > 0) {
        child.findViewById(R.id.channelName).setVisibility(View.GONE);
        child.getLayoutParams().height -= dyConsumed;
    }
    if (dyConsumed < 0 && !target.canScrollVertically(-1)) {
        child.findViewById(R.id.channelName).setVisibility(View.VISIBLE);
    }
}

问题是 onNestedScroll 仅在滚动结束时被调用,因此在滚动完成时调整大小,而我希望它实时调整大小

【问题讨论】:

  • 显示你的代码。

标签: java android android-coordinatorlayout smoothing appbar


【解决方案1】:

您可以使用 CollapsingToolbarLayout。

Android CollapsingToolbarLayoutToolbar 的包装器,它实现了 collapsingAppBar。它旨在用作 AppBarLayout 的直接子级。 这种类型的布局在 Whatsapp 应用程序的配置文件屏幕中很常见。

此布局包括:

折叠标题: 展开布局时标题变大。随着布局折叠并滚出屏幕,文本大小会变小。

app:layout_scrollFlags:此布局的滚动标志通常设置为“scroll|exitUntilCollapsed”。

app:collapsedTitleGravity: 指定标题在折叠时在容器中的重力。

app:contentScrim: 这需要在 CollapsingToolbarLayouts 内容充分滚动到屏幕外时指定可绘制或颜色值,例如。 ?attr/colorPrimary.

app:scrimAnimationDuration: 指定用于稀松布可见性动画的持续时间。这需要一个整数值,例如“100”。

例如https://cdn.journaldev.com/wp-content/uploads/2017/04/android-collapsing-toolbar-default-output.gif

示例代码:`

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/app_bar_height"
    android:fitsSystemWindows="true"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/toolbar_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">


        <ImageView
            android:id="@+id/expandedImage"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:scaleType="centerCrop"
            android:src="@drawable/photo"
            app:layout_collapseMode="parallax"
            app:layout_collapseParallaxMultiplier="0.7" />

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_scrolling" />`

在评论中提出任何困惑,希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多