我在基于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会到达目的地。下面我还添加了图片的外观。你对这个问题的原因有什么看法吗?
此致 亚当
答案 0 :(得分:1)
您的XML布局不完整,但乍一看,我不确定您是否需要在FloatingActionButton中设置锚点。您可以尝试替换
app:layout_anchor="@id/alarmsRecyclerView"
app:layout_anchorGravity="bottom|right|end"
与
android:layout_gravity="bottom|end"
答案 1 :(得分:0)
很好,谢谢。我还调查了当我以编程方式使用文本视图切换回收器视图时,某些属性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);
布局实际上已完成,只缺少结束标记。