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

但是,我不希望这个效果出现在我的应用程序中。但是在阅读MaterialToolbar文档时,似乎没有办法禁用或修改它,这让我很恼火。我在这里错过了什么?
用于再现行为的最小XML布局(以及使用Material3主题):
<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>谢谢你的帮助。
发布于 2022-02-22 17:16:54
所以,在玩了一段时间之后,我将分享我的发现。
只有当属性app:liftOnScroll在AppBarLayout中设置为true时,背景颜色动画才会在滚动时进行。
<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来同步它们:
primaryAppbar.addLiftOnScrollListener(new AppBarLayout.LiftOnScrollListener() {
@Override
public void onUpdate(float elevation, int backgroundColor) {
secondaryAppbar.setElevation(elevation);
secondaryAppbar.setBackgroundColor(backgroundColor);
}
});在本例中,primaryAppbar是接收滚动事件的人。
发布于 2022-09-16 12:56:09
如果使用jetpack compose,则所有类型(CenterAlignedTopAppBar、MediumTopAppBar、LargeTopAppBar)的TopAppBar都具有参数color。我们可以使用它为滚动的TopAppBar设置正确的颜色。
如果要使用默认颜色,但只更改滚动颜色:
colors = TopAppBarDefaults.centerAlignedTopAppBarColors(
scrolledContainerColor = MaterialTheme.colorScheme.surface
),TopAppBar全码
CenterAlignedTopAppBar(
title = {
Text(text = stringResource(id = R.string.teams))
},
colors = TopAppBarDefaults.centerAlignedTopAppBarColors(
scrolledContainerColor = MaterialTheme.colorScheme.surface
),
)发布于 2022-05-20 00:09:32
您可以为工具栏添加样式。
<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"/>https://stackoverflow.com/questions/71214120
复制相似问题