锚定到BottomAppBar的FloatingActionButton在应用程序恢复时消失

Posted

技术标签:

【中文标题】锚定到BottomAppBar的FloatingActionButton在应用程序恢复时消失【英文标题】:FloatingActionButton, which is anchored to BottomAppBar, disappears when the application is resumed 【发布时间】:2020-09-18 13:38:57 【问题描述】:

我的 xml 文件:

   <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_content"
    android:layout_
    android:layout_
    android:background="@color/layout_white"
    android:fitsSystemWindows="true">

    <androidx.constraintlayout.motion.widget.MotionLayout
        android:id="@+id/motion_layout"
        android:layout_
        android:layout_
        app:layoutDescription="@xml/scene_header"
        app:layout_scrollFlags="scroll|enterAlways|snap|exitUntilCollapsed">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_
            android:layout_
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <include
            android:id="@+id/plantRecyclerView"
            layout="@layout/plant_rv_main"
            android:layout_
            android:layout_
            android:clipToPadding="false"
            app:layout_constraintTop_toBottomOf="@id/recyclerView" />

    </androidx.constraintlayout.motion.widget.MotionLayout>

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:layout_
        android:layout_
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintLeft_toLeftOf="parent">

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottom_appbar"
        style="@style/Widget.MaterialComponents.BottomAppBar"
        android:layout_
        android:layout_
        android:layout_gravity="bottom"
        app:fabAlignmentMode="center"
        app:fabAnimationMode="scale"
        app:fabCradleRoundedCornerRadius="50dp"
        app:navigationIcon="@drawable/ic_menu_black_24dp" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/addPlantFab"
        android:layout_
        android:layout_
        android:onClick="@() -> addPlantClick.onAddPlantClick()"
        android:src="@drawable/add_plant"
        app:fabSize="normal"
        app:layout_anchor="@id/bottom_appbar"/>
    </androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

使用此 xml,当我通过单击主页按钮暂停应用程序并再次恢复应用程序时,FloatingActionButton 会消失。但是,当 MotionLayout 过程完成后,FloatingActionButton 会再次可见。

完成意味着进程达到0.0或1.0

另外,我认为问题可能来自应用程序主题。所以,这是我在 styles.xml 中的应用程序主题:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar.Bridge">

我使用 Bridge 是因为我在开发阶段更改了应用程序主题。我不知道为什么会出现这种行为。有没有人面临这样的情况?我的错误是什么?

感谢您的回答...

【问题讨论】:

你能在 github 上分享一个简单的项目吗? 好的,但我需要几分钟谢谢。 @azizbekian 您好,我在 github 上与该设置共享了简单项目,这是存储库 github.com/kadir-tas/FabMotionLayoutSimpleProject@azizbekian 的链接 【参考方案1】:

它与应用程序主题有关。有关更多信息,请评论此答案。

【讨论】:

以上是关于锚定到BottomAppBar的FloatingActionButton在应用程序恢复时消失的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIAlertController 操作表锚定到特定单元格 UICollectionView?

导航栏可以锚定到特定位置吗?

如何将视图锚定到 android 软键盘

为啥锚定到 ApplicationWindow 的项目的大小为零?

如何将 Reality Composer (RealityKit) 场景锚定到检测到的图像

将项目锚定到屏幕中心并带有一些偏移