Как добавить тень к 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
6 ответов:
просто задание
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"
, потому что я думал, что мне это нужно для тепловой карты, в которой показано большое количество точек, но потом я понял, что это может работать только сandroid:largeHeap="true"
.
в случае, если это поможет, я использовал
android:tint="@color/myColor"
вместо
android:backgroundTint="@color/myColor".
замена оттенка на backgroundTint вернула тень.
Comments