Как добавить тень в FAB, предоставляемую библиотекой дизайна поддержки Android?

Название довольно объяснительно.

Следующий код не отображает тень ниже плавающей кнопки действия. Что можно сделать, чтобы сделать тень? Эта функция действительно не поддерживается даже в API 21+?

<android.support.design.widget.FloatingActionButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_add" android:clickable="true" /> 

Примечание. Добавление android:elevation не добавляет тени в API 21.

Пример скриншота

Снимок экрана, взятый из примера dandar3: https://github.com/dandar3/android-support-design

Solutions Collecting From Web of "Как добавить тень в FAB, предоставляемую библиотекой дизайна поддержки Android?"

Просто установив app:borderWidth="0dp" разрешите эту проблему для меня.

Примечание. Не забудьте добавить xmlns:app="http://schemas.android.com/apk/res-auto" в свой корневой макет.

Эта проблема должна быть исправлена ​​в следующем выпуске библиотеки дизайна Android.

Для API 21+ вам нужно установить app:borderWidth="0dp" и app:elevation="[number]dp" . Устанавливая высоту, вы придаете размер тени, который вы хотите:

Пример значений параметра "высота"

Вот пример кода для API 21+:

 <android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/locate_user_FAB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/location_off" app:elevation="6dp" app:borderWidth="0dp" android:layout_above="@+id/take_taxi_FAB" app:backgroundTint="@color/colorAccentGrey"> 

Одна важная вещь, которую следует помнить для API ниже до 21 (Android 4), – это условия совместимости. FAB поместит поля вокруг вашей кнопки, чтобы нарисовать тень. Тогда вы должны сделать что-то подобное (я в настоящее время использую этот код и работает):

 <android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/locate_user_FAB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/location_off" app:elevation="6dp" app:borderWidth="0dp" android:layout_above="@+id/take_taxi_FAB" android:layout_alignParentRight="true" android:layout_marginRight="@dimen/map_FAB_marginRight" android:layout_marginBottom="@dimen/locate_user_FAB_marginBottom" app:backgroundTint="@color/colorAccentGrey"> 

Я предпочитаю ставить xmlns:app="http://schemas.android.com/apk/res-auto" в начале XML, но я там просто напомнил;]

Если это еще не работает для некоторых, существует значительная разница между:

 app:elevation="6dp" app:borderWidth="0dp" 

а также

 app:borderWidth="0dp" app:elevation="6dp" 

Кажется, что порядок по какой-то причине (первый заказ работает, второй – нет), и это из библиотеки поддержки 23.3.0

Проверьте манифест в проекте или библиотеках в теге приложения и удалите их

 android:hardwareAccelerated="false" android:largeHeap="true" 

Но если вам нужны эти параметры, тени и анимация преобразования не будут работать

У меня возникла такая же проблема, и я получил ее для работы, удалив этот тег из моего AndroidManifest.xml.

 android:hardwareAccelerated="false" 

Я сначала добавил его вместе с android:largeHeap="true" , потому что я думал, что мне это нужно для HeatMap, в котором показано большое количество точек, но потом я понял, что он может работать только с android:largeHeap="true" ,