【问题标题】:Listen to offset changes (collapsing/expanding) of AppBarLayout to change toolbar's background in Kotlin监听 AppBarLayout 的偏移量变化(折叠/展开)以改变 Kotlin 中工具栏的背景
【发布时间】:2019-12-03 15:43:43
【问题描述】:

我正在自定义Collapsing Toolbar Layout。折叠部分完成,工具栏也做了相应的调整。唯一缺少的是我想更改我的Toolbars 背景因为 Collapsing Toolbar Layout 正在崩溃,即逐渐增加我的Toolbars 背景的不透明度。

我已经看到很多似乎在 Java 中做我想做的事情的答案。不幸的是,我(根本没有)Java 基础知识,最有意义的一个在这里:here。我尝试将上述代码粘贴到我的 Android Studio IDE 中,但它不起作用(它并没有真正覆盖任何东西)。供参考,该帖子的代码在这里:

@Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {

        //measuring for alpha
        int toolBarHeight = toolbar.getMeasuredHeight();
        int appBarHeight = appBarLayout.getMeasuredHeight();
        Float f = ((((float) appBarHeight - toolBarHeight) + verticalOffset) / ( (float) appBarHeight - toolBarHeight)) * 255;
        fading_backdrop.getBackground().setAlpha(255 - Math.round(f));
   }

我同样想这样做,即我希望能够听到我的AppBarLayout 的 Y 偏移量来逐渐改变我的Toolbars 背景。

我有以下 activity_xml 文件(以防万一):

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout ...>

    <com.google.android.material.appbar.AppBarLayout
        ... >

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/collapsingToolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/bg_collapsing_toolbar"
            app:collapsedTitleTextAppearance="@style/CollapsedCollapsingToolbarText"
            app:expandedTitleTextAppearance="@style/ExpandedCollapsingToolbarText"
            app:layout_scrollFlags="exitUntilCollapsed|scroll">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/bg_collapsing_toolbar"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.75" />

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/Theme.AppCompat.Light">

                <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                    <TextView
                        ... />

                    <ImageView
                        ... />

                    <ImageView
                        ... />

                </androidx.constraintlayout.widget.ConstraintLayout>
            </androidx.appcompat.widget.Toolbar>
        </com.google.android.material.appbar.CollapsingToolbarLayout>
    </com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

我如何收听一些AppBarLayout 偏移量变化,以便在Collapsing Toolbar Layout 在Kotlin 中崩溃时逐渐改变Toolbars 背景?

【问题讨论】:

    标签: android android-layout kotlin android-collapsingtoolbarlayout android-appbarlayout


    【解决方案1】:

    试试这个。

    appBarLayout.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->
                //measuring for alpha
                int toolBarHeight = toolbar.getMeasuredHeight();
                int appBarHeight = appBarLayout.getMeasuredHeight();
                Float f = ((((float) appBarHeight - toolBarHeight) + verticalOffset) / ( (float) appBarHeight - toolBarHeight)) * 255;
                fading_backdrop.getBackground().setAlpha(255 - Math.round(f));
            })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      相关资源
      最近更新 更多