Come creare un pulsante di azione flottante ( FAB ) in Android, utilizzando AppCompat V21 ?

? Salvuccio96 @ | Original: StackOverFlow
---

Vorrei creare un pulsante di azione galleggiante ( per aggiungere elementi a un controllo ListView ), come Google Calendar, mantenendo la compatibilità con pre - lollipop versioni di Android ( prima 5.0 ) .

Ho creato questo layout :

Main_activity.xml Attività :

<LinearLayout ... >

     <include
         layout="@layout/toolbar"/>

     <RelativeLayout ... >

     <!-- My rest of the layout -->

          <!-- Floating action button -->
          <ImageButton style="@style/AppTheme"
                     android:layout_width="60dp"
                     android:layout_height="60dp"
                     android:text="New Button"
                     android:id="@+id/button"
                     android:src="@drawable/ic_fab"
                     android:background="@drawable/fab"
                     android:layout_alignParentBottom="true"
                     android:layout_alignParentRight="true"
                     android:layout_marginBottom="24dp"
                     android:layout_marginRight="24dp"/>

     </RelativeLayout>

 </LinearLayout>

Fab.xml Drawable :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="oval">
    <solid android:color="#ffa48bc0"/>
</shape>

Style styles.xml

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">#ff1d79b1</item>
        <item name="colorPrimaryDark">#ff084d95</item>
    </style>
</resources>

Il risultato è simile, ma non c'è l'ombreggiatura, una caratteristica del materiale disegno :

Pulsante di azione flottante del Calendario:

Come creare un pulsante di azione flottante ( FAB ) in Android, utilizzando AppCompat V21 ?

Pulsante di azione galleggiante della mia app :

Come creare un pulsante di azione flottante ( FAB ) in Android, utilizzando AppCompat V21 ?

Come posso aggiungere l'ombreggiatura al mio tasto ?

Ho già utilizzato l'elevazione di attributo, ma non funziona

---

Top 5 Risposta

1user3249477 @

Aggiungere imbottitura e di elevazione :

 android:elevation="10dp"
 android:padding="10dp"
2Oleksii Kropachov @

Prova https://github.com/shamanland/floating-action-button, supporta l'ombra, c'è minSdkVersion=7 e supporta anche android:elevation attributo per API-21 implicitamente .

Post originale è http://stackoverflow.com/a/25739038/1891118 .

3QAMAR @

Ci sono un sacco di librerie là fuori aggiungere un ( Pulsante Azione Floating ) FAB nella vostra applicazione, Qui ci sono alcuni di loro che conosco.

https://github.com/makovkastar/FloatingActionButton

https://github.com/futuresimple/android-floating-action-button

https://github.com/navasmdc/MaterialDesignLibrary

Tutte queste librerie sono supportati su dispositivi pre - lollipop, minima per api 8

4Justin Pollard @

Ho generalmente usato drawable XML per creare ombra / elevazione su un widget pre - lecca . Qui, per esempio, è un drawable XML che può essere utilizzato su dispositivi pre - lollipop per simulare elevazione del pulsante di azione flottante .

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="8px">
    <layer-list>
        <item>
            <shape android:shape="oval">
                <solid android:color="#08000000"/>
                <padding
                    android:bottom="3px"
                    android:left="3px"
                    android:right="3px"
                    android:top="3px"
                    />
            </shape>
        </item>
        <item>
            <shape android:shape="oval">
                <solid android:color="#09000000"/>
                <padding
                    android:bottom="2px"
                    android:left="2px"
                    android:right="2px"
                    android:top="2px"
                    />
            </shape>
        </item>
        <item>
            <shape android:shape="oval">
                <solid android:color="#10000000"/>
                <padding
                    android:bottom="2px"
                    android:left="2px"
                    android:right="2px"
                    android:top="2px"
                    />
            </shape>
        </item>
        <item>
            <shape android:shape="oval">
                <solid android:color="#11000000"/>
                <padding
                    android:bottom="1px"
                    android:left="1px"
                    android:right="1px"
                    android:top="1px"
                    />
            </shape>
        </item>
        <item>
            <shape android:shape="oval">
                <solid android:color="#12000000"/>
                <padding
                    android:bottom="1px"
                    android:left="1px"
                    android:right="1px"
                    android:top="1px"
                    />
            </shape>
        </item>
        <item>
            <shape android:shape="oval">
                <solid android:color="#13000000"/>
                <padding
                    android:bottom="1px"
                    android:left="1px"
                    android:right="1px"
                    android:top="1px"
                    />
            </shape>
        </item>
        <item>
            <shape android:shape="oval">
                <solid android:color="#14000000"/>
                <padding
                    android:bottom="1px"
                    android:left="1px"
                    android:right="1px"
                    android:top="1px"
                    />
            </shape>
        </item>
        <item>
            <shape android:shape="oval">
                <solid android:color="#15000000"/>
                <padding
                    android:bottom="1px"
                    android:left="1px"
                    android:right="1px"
                    android:top="1px"
                    />
            </shape>
        </item>
        <item>
            <shape android:shape="oval">
                <solid android:color="#16000000"/>
                <padding
                    android:bottom="1px"
                    android:left="1px"
                    android:right="1px"
                    android:top="1px"
                    />
            </shape>
        </item>
        <item>
            <shape android:shape="oval">
                <solid android:color="#17000000"/>
                <padding
                    android:bottom="1px"
                    android:left="1px"
                    android:right="1px"
                    android:top="1px"
                    />
            </shape>
        </item>
    </layer-list>
</item>
<item>
    <shape android:shape="oval">
        <solid android:color="?attr/colorPrimary"/>
    </shape>
</item>
</layer-list>

Al posto di ?attr/colorPrimary potete scegliere qualsiasi colore . Ecco uno screenshot del risultato :

Come creare un pulsante di azione flottante ( FAB ) in Android, utilizzando AppCompat V21 ?

5Shell Software @

Ecco uno adizionale gratuito https://github.com/shell-software/fab Ha molte personalizzazioni e richiede SDK versione 9 e superiori

Come creare un pulsante di azione flottante ( FAB ) in Android, utilizzando AppCompat V21 ?

https://www.youtube.com/watch?v=skSApXvi4xM