J'essaie d'obtenir FAB sur recyclerview qui dans mon cas couvrira tout l'écran. Le FAB n'affiche pas même la vue de recyclage est vide. Voici mon code xml.
<Android.support.v4.widget.DrawerLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/drawer_layout"
xmlns:tools="http://schemas.Android.com/tools"
xmlns:app="http://schemas.Android.com/apk/res-auto"
tools:context="com.technistan.ledger.CreateLedger"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<LinearLayout
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<include
Android:id="@+id/tool_bar"
layout="@layout/tool_bar"
></include>
<FrameLayout
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.v7.widget.RecyclerView
Android:paddingLeft="2dp"
Android:paddingRight="2dp"
Android:id="@+id/recyclerView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_weight="1"
/>
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/myFAB"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom|end"
Android:layout_margin="20dp"
app:elevation="4dp" />
</FrameLayout>
</LinearLayout>
<fragment
Android:id="@+id/fragment_navigation_drawer"
Android:layout_width="280dp"
Android:layout_height="match_parent"
Android:layout_gravity="start"
app:layout="@layout/fragment_navigation_drawer"
Android:name="com.technistan.ledger.NavigationDrawerFragment"
tools:layout="@layout/fragment_navigation_drawer" />
</Android.support.v4.widget.DrawerLayout>
L'aperçu montre le bouton flottant très bien comme dans l'accrochage ci-dessous; https://www.dropbox.com/s/18u5pt5v6kkkibj/Screen%20Shot%202015-09-13%20at%201.19.20%20PM.png?dl=
Mais lorsque j'exécute l'application, aucun FAB n'est affiché. J'avais essayé de nombreuses combinaisons mais je n'ai pas réussi. J'ai essayé ceci sur listview sans navigationdrawer (activité simple et cela fonctionnait là-bas c'est-à-dire affiché sur listview).
Toute aide sera appréciée les gars. Merci
[EDIT:] Je pense que le problème est dû à la disposition parent c.-à-d. Android.support.v4.widget.DrawerLayout, j'avais copié collé le code de du début à la fin d'une autre activité vide et il y montre le bouton flottant. Mais toujours incapable de comprendre comment résoudre ce problème, je dois afficher le bouton d'action flottant à l'intérieur du Drawerlayout.
Essayez-le comme ceci:
Supprimez toutes les dispositions.
Ne gardez qu'un seul parent, c'est CoordinatorLayout
.
Dans CoordinatorLayout
, mettez à la fois votre RecyclerView
et FloatingActionButton
.
CoordinatorLayout
devrait organiser automatiquement votre barre d'outils, recycleur et fab, car il est programmé pour gérer les composants de la bibliothèque de support de conception.
Voici un exemple. Vous pouvez utiliser RecyclerView
à la place de FrameLayout (qui charge dynamiquement les fragments au moment de l'exécution). J'utilise généralement RecyclerView
dans un autre Fragment
et je charge le fragment ici au moment de l'exécution. Cela maintient les fichiers xml propres.
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.design.widget.CoordinatorLayout
Android:id="@+id/layout_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:elevation="0dp">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</Android.support.design.widget.AppBarLayout>
<!-- Main layout for fragment placing -->
<FrameLayout
Android:id="@+id/container"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" >
</FrameLayout>
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/fabBtn"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/ic_action"
Android:layout_gravity="bottom|right"
Android:layout_marginBottom="@dimen/fab_margin_bottom"
Android:layout_marginRight="@dimen/fab_margin_right"
app:fab_colorNormal="@color/pink"
app:fab_colorPressed="@color/pink_pressed"
app:borderWidth = "0dp" />
</Android.support.design.widget.CoordinatorLayout>
<!-- Nav drawer -->
<Android.support.design.widget.NavigationView
Android:id="@+id/navigation"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
app:itemIconTint="@color/pink_pressed"
app:itemTextColor="@color/primary_text"
app:menu="@menu/nav_menu" />
</Android.support.v4.widget.DrawerLayout>
Essayez d'utiliser FrameLayout au lieu de LinearLayout comme disposition racine. Cela a fonctionné pour moi.