使用 BottomAppBar 材料设计组件的片段过渡

Posted

技术标签:

【中文标题】使用 BottomAppBar 材料设计组件的片段过渡【英文标题】:Fragment transition with BottomAppBar Material Design Component 【发布时间】:2019-02-02 08:47:59 【问题描述】:

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

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

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

FloatingActionButton 对齐模式 FloatingActionButton 可以是 与中心 (FAB_ALIGNMENT_MODE_CENTER) 或末端对齐 (FAB_ALIGNMENT_MODE_END) 通过调用 setFabAlignmentMode(int)。这 默认动画将自动运行。这个可以协调 带有片段过渡以允许从 主屏幕到辅助屏幕。 (source)

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

<?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_
    android:layout_
    tools:context=".main.MainActivity">

    <LinearLayout
        android:id="@+id/container"
        android:layout_
        android:layout_
        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_
        android:layout_
        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_
        android:layout_
        app:layout_anchor="@id/bottom_app_bar"
        app:srcCompat="@drawable/ic_add" />


</androidx.coordinatorlayout.widget.CoordinatorLayout>

非常感谢您提供有关该问题的指导或示例。

谢谢!

【问题讨论】:

检查this和this @FalloutBoy 我已经检查了这些来源,它们不使用片段。因此他们没有实现正确的过渡和/或布局。 【参考方案1】:

你只需要隐藏它,然后监听器检测到它隐藏并再次显示它,转换会自动执行。同时你必须切换片段。

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();
    
);

【讨论】:

以上是关于使用 BottomAppBar 材料设计组件的片段过渡的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:使用 Sliver 小部件时如何在滚动时隐藏 BottomAppBar?

使用导航组件时从 BottomNavigationView 中移除 Badge

在材料设计组件中如何计算原色的浅色和深色版本?

Angular2中的材料设计组件“不是已知元素”

Androidx材料设计底部appbar如何隐藏后退箭头

android:背景在材料设计按钮组件中不起作用