FloatingActionButton появляется под экраном при использовании TabLayout и ViewPager
Посмотрите на FAB
ниже:
Это не появляется, пока я не сверну Toolbar
, Вот мой XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_below="@+id/toolbar"
android:layout_marginTop="0dp"
android:animateLayoutChanges="true"
android:background="@android:color/white"
android:layoutDirection="locale"
android:orientation="vertical"
android:padding="0dp">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/cLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="0dp" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@color/accent"
android:src="@drawable/ic_add"
app:layout_anchor="@id/list"
app:layout_anchorGravity="bottom|end" />
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>
Почему это происходит, если я не установил поведение для FAB
? Есть ли какое-либо свойство, которое я должен добавить к чему-либо, чтобы я мог предотвратить это поведение?
3 ответа
Просто удалите свой FloatingActionButton
с каждого Fragment
и добавить его в свой Activity
, Таким образом, не только FAB остается на месте, но и решает вашу проблему. Тогда вы можете использовать getActivity().findViewByIf(id)
в вашем Fragment
и установить onClickListener
в каждом Fragment
,
Расположение координаторов не ведет себя как относительное расположение, вы не можете иметь несколько дочерних элементов, не мешая друг другу. так что просто сделайте один дочерний элемент макета координатора, т.е. относительного макета, и внутри него добавьте recyclerView и floatingActionButton
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="0dp" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@color/accent"
android:src="@drawable/ic_add"
app:layout_anchor="@id/list"
app:layout_anchorGravity="bottom|end" /></RelativeLayout>
Я предлагаю вам удалить RelativeLayout и реструктурировать свой макет следующим образом:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/cLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="0dp" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@color/accent"
android:src="@drawable/ic_add"
app:layout_anchor="@id/list"
app:layout_anchorGravity="bottom|end" />
<com.rey.material.widget.ProgressView
android:id="@+id/progress_bar"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
app:pv_autostart="true"
app:pv_circular="true"
app:pv_progressMode="indeterminate"
app:pv_progressStyle="@style/Material.Drawable.CircularProgress" />
</android.support.design.widget.CoordinatorLayout>