Ben*_*Tec 1 android material-design android-toolbar material-components-android
我正在将我的应用程序迁移到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>
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助。
因此,在玩了一段时间后,我将分享我的发现。
app:liftOnScroll仅当属性设置true为时,背景颜色动画才会在滚动时发生AppBarLayout。
<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>
Run Code Online (Sandbox Code Playgroud)
设置 后app:liftOnScroll="false",工具栏将永久显示高亮颜色。然后可以通过设置属性来更改它android:background。
如果您有一个包含两个 AppBar 的布局,并且您希望两者都在滚动时显示动画,则可以通过调用addLiftOnScrollListener来同步它们,如下所示:
primaryAppbar.addLiftOnScrollListener(new AppBarLayout.LiftOnScrollListener() {
@Override
public void onUpdate(float elevation, int backgroundColor) {
secondaryAppbar.setElevation(elevation);
secondaryAppbar.setBackgroundColor(backgroundColor);
}
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,primaryAppbar是接收滚动事件的那个。
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |