web-dev-qa-db-fra.com

La marge par défaut de FloatingActionButton ne fonctionne pas dans sucette

J'affiche FloatingActionButton avec une Recyclerview dans une CoordinatorLayout, lorsque l'utilisateur clique sur le FAB, une ligne est ajoutée dans Recyclerview. Maintenant, le problème est que le FAB a une marge lorsque j’ai testé dans l’API 15 mais que j’ai testé dans l’API 22 (Lollipop 5.1.1-Nexus 4), je n’obtiens aucune marge et le FAB est enfoncé au bord de l’écran.

Mon problème est que FAB a une configuration de marge par défaut dans l'API 15 (je n'ai pas testé d'autres périphériques), mais pas dans l'API 22 ou il me manque quelque chose.

Mon code de mise en page:

<Android.support.design.widget.CoordinatorLayout 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:background="#6fbababa"
    Android:fitsSystemWindows="true">

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/my_recycler_view"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:clipToPadding="false"
        Android:paddingBottom="@dimen/fab_padding_bottom"
        Android:scrollbars="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="#ffffff">

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:fitsSystemWindows="true"
            Android:orientation="horizontal"
            app:layout_scrollFlags="scroll|enterAlwaysCollapsed">
            ---------------------
            ---------------------    
        </LinearLayout>

    </Android.support.design.widget.AppBarLayout>

    <Android.support.design.widget.FloatingActionButton
        Android:id="@+id/button_floating_action"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:clickable="true"
        Android:src="@drawable/ic_plus"
        app:borderWidth="0dp"
        app:layout_anchor="@id/my_recycler_view"
        app:layout_anchorGravity="bottom|right|end"
        app:rippleColor="@color/wallet_highlighted_text_holo_light" />

</Android.support.design.widget.CoordinatorLayout>

enter image description here

22
Psypher

Il suffit d'utiliser:

app:useCompatPadding="true"

Cela devrait ajouter de l'espace requis.

18
Dawid Hyży

J'ai fini par utiliser des valeurs de marge spécifiques à l'API. Mon bouton d'action est comme ça:

    <Android.support.design.widget.FloatingActionButton
    Android:contentDescription="@string/menu_compose"
    Android:id="@+id/action"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:clickable="true"
    Android:src="@drawable/ic_create_white"
    Android:layout_gravity="bottom|right|end"
    Android:layout_marginBottom="@dimen/action_button_margin"
    Android:layout_marginRight="@dimen/action_button_margin"
    Android:layout_marginEnd="@dimen/action_button_margin"
    app:elevation="6dp"
    app:pressedTranslationZ="12dp"
    app:fabSize="normal"/>

@dimen/action_button_margin est défini dans les deux valeurs/dimens.xml:

<dimen name="action_button_margin">0dp</dimen>

Et dans values-v21/dimens.xml:

<dimen name="action_button_margin">16dp</dimen>
14
Daniele Ricci

Je suppose que vous avez le même problème que décrit dans cette question . La marge différente est due au fait que l'ombre est calculée ou non en fonction de la version de l'API.

0
findusl