首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Material3 MaterialToolbar禁用滚动体的着色

Material3 MaterialToolbar禁用滚动体的着色
EN

Stack Overflow用户
提问于 2022-02-21 23:16:03
回答 3查看 848关注 0票数 1

我正在将我的应用程序迁移到Theme.Material3.*,当一些内容滚动到它下面时,我发现MaterialToolbar现在正在以某种重音颜色突出显示。请参阅下面所指的动画:

但是,我不希望这个效果出现在我的应用程序中。但是在阅读MaterialToolbar文档时,似乎没有办法禁用或修改它,这让我很恼火。我在这里错过了什么?

用于再现行为的最小XML布局(以及使用Material3主题):

代码语言:javascript
复制
<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:liftOnScroll="true">

        <com.google.android.material.appbar.MaterialToolbar
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:titleCentered="true"
            app:title="Welcome"
            app:layout_scrollFlags="noScroll" />

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

    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
   
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Lorem ipsum dolor sit amet..." />

    </androidx.core.widget.NestedScrollView>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2022-02-22 17:16:54

所以,在玩了一段时间之后,我将分享我的发现。

只有当属性app:liftOnScrollAppBarLayout中设置为true时,背景颜色动画才会在滚动时进行。

代码语言:javascript
复制
<com.google.android.material.appbar.AppBarLayout
        android:id="@+id/primaryAppbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:liftOnScroll="true">

        <com.google.android.material.appbar.MaterialToolbar
            android:id="@+id/primaryToolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize" />

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

设置app:liftOnScroll="false"时,工具栏将永久显示高亮颜色。然后,可以通过设置android:background属性来更改这一点。

如果您有一个包含两个AppBars的布局,并且希望两者都在滚动时显示动画,您可以按如下方式调用addLiftOnScrollListener来同步它们:

代码语言:javascript
复制
primaryAppbar.addLiftOnScrollListener(new AppBarLayout.LiftOnScrollListener() {
    @Override
    public void onUpdate(float elevation, int backgroundColor) {
        secondaryAppbar.setElevation(elevation);
        secondaryAppbar.setBackgroundColor(backgroundColor);
    }
});

在本例中,primaryAppbar是接收滚动事件的人。

票数 4
EN

Stack Overflow用户

发布于 2022-09-16 12:56:09

如果使用jetpack compose,则所有类型(CenterAlignedTopAppBarMediumTopAppBarLargeTopAppBar)的TopAppBar都具有参数color。我们可以使用它为滚动的TopAppBar设置正确的颜色。

如果要使用默认颜色,但只更改滚动颜色:

代码语言:javascript
复制
colors = TopAppBarDefaults.centerAlignedTopAppBarColors(
    scrolledContainerColor = MaterialTheme.colorScheme.surface
),

TopAppBar全码

代码语言:javascript
复制
CenterAlignedTopAppBar(
    title = {
        Text(text = stringResource(id = R.string.teams))
    },
    colors = TopAppBarDefaults.centerAlignedTopAppBarColors(
        scrolledContainerColor = MaterialTheme.colorScheme.surface
    ),
)
票数 1
EN

Stack Overflow用户

发布于 2022-05-20 00:09:32

您可以为工具栏添加样式。

代码语言:javascript
复制
<com.google.android.material.appbar.MaterialToolbar
    android:id="@+id/toolbar"
    style="@style/Widget.Material3.Toolbar.Surface"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:layout_scrollFlags="noScroll"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71214120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档