Как добавить тень к 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.



Example screenshot



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

329   6  

6 ответов:

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

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

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

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

Example of values for parameter "elevation"

вот пример кода для 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

    Ничего не найдено.