usar studio flotantes float developers como bottom botones android xml

studio - ¿Cómo crear un botón de acción flotante(FAB) en Android, usando AppCompat v21?



floating action button implementation (7)

Me gustaría crear un botón de acción flotante (para agregar elementos a una vista de lista), como el calendario de google, manteniendo la compatibilidad con las versiones de Android anteriores a la piruleta (antes de 5.0).

Creé este diseño:

Actividad main_activity.xml:

<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>

Draw fab.xml:

<?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>

El resultado es similar, pero no existe el sombreado, una característica del diseño de materiales:

Botón de acción flotante del calendario:

El botón de acción flotante de mi aplicación:

¿Cómo puedo agregar el sombreado a mi botón?

Ya he usado la elevación del atributo, pero no funciona


Añadir relleno y elevación:

android:elevation="10dp" android:padding="10dp"



El código xml de Justin Pollard funciona realmente bien. Como nota al margen, puede agregar un efecto dominó con las siguientes líneas xml.

<item> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight" > <item android:id="@android:id/mask"> <shape android:shape="oval" > <solid android:color="#FFBB00" /> </shape> </item> <item> <shape android:shape="oval" > <solid android:color="@color/ColorPrimary" /> </shape> </item> </ripple> </item>


En general, he usado xml drawables para crear shadow / elevation en un widget pre-lollipop. Aquí, por ejemplo, se encuentra un xml drawable que se puede usar en dispositivos pre-lollipop para simular la elevación del botón de acción flotante.

<?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>

En lugar de ?attr/colorPrimary puede elegir cualquier color. Aquí hay una captura de pantalla del resultado:



Pruebe esta biblioteca , admite shadow, hay minSdkVersion=7 y también admite android:elevation atributo de android:elevation para API-21 implícitamente.

La publicación original está here .


Ya no es necesario crear su propio FAB ni utilizar una biblioteca de terceros, se incluyó en AppCompat 22.

https://developer.android.com/reference/android/support/design/widget/FloatingActionButton.html

Simplemente agregue la nueva biblioteca de soporte llamada diseño en su archivo gradle:

compile ''com.android.support:design:22.2.0''

... y estás listo para ir:

<android.support.design.widget.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_margin="16dp" android:clickable="true" android:src="@drawable/ic_happy_image" />