将一个元素添加到回收站视图时,FAB 与 AppBarLayout 对齐

FAB aligns to AppBarLayout when adding one element to recycler view

我在基于 CoordinatorLayout 创建布局时遇到问题。布局非常简单,它包含工具栏、RecyclerView、TextView(当列表中没有元素时替换回收器视图)和浮动操作按钮。这是代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
android:id="@+id/mainCoordinatorLayout"
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="com.steveq.qroclock_20.presentation.activities.MainActivity"
android:orientation="vertical">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize">
    <android.support.v7.widget.Toolbar
        android:id="@+id/mainToolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:elevation="4dp"
        android:fitsSystemWindows="true">
        <TextView
            android:id="@+id/toolbarTitleTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:text="@string/app_name"
            android:textSize="24sp"
            fontPath="fonts/SourceSansPro-Bold.ttf"
            android:textColor="@color/material_teal_800"/>
    </android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>

<android.support.v7.widget.RecyclerView
    android:id="@+id/alarmsRecyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical"
    android:padding="4dp"
    android:visibility="visible"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

<TextView
    android:id="@+id/emptyRecyclerViewReplacement"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:visibility="gone"
    android:text="no alarms" />


<android.support.design.widget.FloatingActionButton
    android:id="@+id/addAlarmFab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/plus_vec"
    android:layout_margin="16dp"
    app:layout_anchor="@id/alarmsRecyclerView"
    app:layout_anchorGravity="bottom|right|end"
    android:clickable="true"

问题是当我启动应用程序并将项目添加到回收站视图时,FAB 与工具栏对齐(AppBarLayout?)。当我添加另一个项目时,FAB 会到达目的地。下面我还添加了它的外观图片。你知道这个问题的原因吗?

此致, 亚当

您的 XML 布局不完整,但乍一看,我不确定您是否需要在 FloatingActionButton 中设置锚点。您可以尝试替换

app:layout_anchor="@id/alarmsRecyclerView"
app:layout_anchorGravity="bottom|right|end"

android:layout_gravity="bottom|end"

它工作正常谢谢。我还调查了当我以编程方式将回收器视图与文本视图切换时缺少某些属性 layout_anchorGravity 但是下面的代码并没有解决问题:

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) 
alarmFab.getLayoutParams();
params.setAnchorId(emptyTextView.getId());
params.gravity = Gravity.BOTTOM | GravityCompat.END;
alarmFab.setLayoutParams(params);
alarmsRecyclerView.setVisibility(View.GONE);
emptyTextView.setVisibility(View.VISIBLE);

布局实际上已经完成,只是缺少结束标记。