4 votes

FAB se cache sous Bottom Sheet

J'ai le fichier XML suivant :

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/sliding_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/app_bar">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <fragment
            android:id="@+id/fragment1"
            android:name="com.xyz.Fragment1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            tools:layout="@layout/fragment_layout1" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layoutBottomSheet"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="@dimen/global_margin"
        android:orientation="vertical"
        app:layout_behavior="@string/bottom_sheet_behavior">

        <fragment
            android:id="@+id/fragment2"
            android:name="com.xyz.Fragment2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center|top"
            tools:layout="@layout/fragment_layout2" />
    </LinearLayout>

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="@dimen/global_margin"
        android:layout_marginRight="@dimen/global_margin"
        android:src="@drawable/ic_add_white_24dp"
        app:borderWidth="0dp"
        app:elevation="4dp"
        app:layout_anchor="@id/layoutBottomSheet"
        app:layout_anchorGravity="top|right|end" />
</android.support.design.widget.CoordinatorLayout>

La mise en page doit apparaître comme suit, Fragment1 puis en dessous Fragment2 et le FAB est ancré à Fragment2 mais, ci-dessus Fragment2 et non sous il.

En fait, il s'affiche comme suit,

screenshot

Qu'est-ce qui ne va pas ? Une idée ?

7voto

msal Points 673

Votre layoutBottomSheet -LinearLayout a une hauteur de @dimen/global_margin . Si cette dimension est supérieure aux 4dp que vous avez définis comme élévation pour le FloatingActionButton, le bouton est caché derrière la disposition supérieure.

Cette dimension est probablement supérieure à 4dp. Modifiez donc l'élévation du bouton en conséquence.

0voto

Louis CAD Points 4976

Vous pouvez appeler setCompatElevation(...) sur la FAB avec une valeur supérieure à l'élévation de la feuille inférieure (qui est de 16dp si vous utilisez la fonction style="@style/Widget.Design.BottomSheet.Modal" ) pour s'assurer qu'il figure en tête de liste.

0voto

Antonio López Points 31

J'ai ajouté app:layout_dodgeInsetEdges="bottom" dans le FloatingActionBButton et app:layout_insetEdge="bottom" dans la View avec le comportement de la feuille inférieure :

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end|bottom"
        android:layout_margin="16dp"
        android:clickable="true"
        android:focusable="true"
        app:backgroundTint="@color/white"
        app:fabSize="normal"
        app:layout_dodgeInsetEdges="bottom"
        app:srcCompat="@drawable/icon"
        />

    <View
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_insetEdge="bottom"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
        />

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X