首页 > 解决方案 > 如何通过动态调整大小的应用栏保持偏移?

问题描述

我有如下典型的折叠工具栏设置:

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/coordinator"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="192dp">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/collapsingtoolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"/>
        </com.google.android.material.appbar.CollapsingToolbarLayout>
    </com.google.android.material.appbar.AppBarLayout>
    ...
    ...
    ...
</androidx.coordinatorlayout.widget.CoordinatorLayout>

问题是,在这个屏幕上onPreDraw的一个textView中,我需要动态更改 的大小,appBar这会在重新创建视图时弄乱appBar' 的偏移量。在onViewCreated我做:

textView.doOnPreDraw {
    appBar.layoutParams = appBar.layoutParams.apply {
        height = requireContext().dip(300)
    }
}

所以现在当我(例如)完全折叠时,转到不同的片段然后返回,appBar的偏移量完全搞砸了,我处于这个半展开状态。这个问题有什么解决办法吗?

标签: androidkotlinandroid-coordinatorlayoutandroid-collapsingtoolbarlayoutandroid-appbarlayout

解决方案


推荐阅读