使用 BottomAppBar Material Design 组件进行片段过渡

J-m*_*-me 5 android transition appbar floating-action-button

我正在尝试实现材料设计组件文档中指定的关于浮动操作按钮的以下底部应用栏转换。

在此输入图像描述

此处指定了此行为的官方设计文档

现在,该视图的实现文档指定了以下内容:

FloatingActionButton 对齐模式 FloatingActionButton 可以通过调用 setFabAlignmentMode(int) 对齐到中心 (FAB_ALIGNMENT_MODE_CENTER) 或末端 (FAB_ALIGNMENT_MODE_END)。默认动画将自动运行。这可以与片段过渡相协调,以实现从主屏幕到辅助屏幕的平滑动画。(来源)

我似乎找不到任何地方实施的行为示例。我用于底部应用栏组件的代码如下(在我的活动布局文件中):

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".main.MainActivity">

    <LinearLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:background="#000">

    </LinearLayout>

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottom_app_bar"
        style="@style/Widget.MaterialComponents.BottomAppBar.Colored"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:fabAlignmentMode="center"
        app:hideOnScroll="true"
        app:navigationIcon="@drawable/ic_hamburger_menu" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/bottom_app_bar"
        app:srcCompat="@drawable/ic_add" />


</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

非常感谢有关该问题的一些指导或示例。

谢谢你!

Fal*_*Boy 0

您只需隐藏它,侦听器就会检测到它的隐藏并再次显示它,转换会自动执行。此外,您还必须同时切换片段。

binding.fabMain.hide(new FloatingActionButton.OnVisibilityChangedListener() {
    @Override
    public void onShown(FloatingActionButton fab) {
        super.onShown(fab);
    }

    @Override
    public void onHidden(FloatingActionButton fab) {
        super.onHidden(fab);
        binding.fabMain.show();
    }
});
Run Code Online (Sandbox Code Playgroud)