webentwicklung-frage-antwort-db.com.de

Wie füge ich Schatten zu der FAB hinzu, die mit der Android-Supportdesign-Bibliothek bereitgestellt wird

Der Titel ist ziemlich selbsterklärend.

Mit dem folgenden Code wird kein Schatten unter der Floating Action-Schaltfläche dargestellt. Was kann man tun, um Schatten zu rendern? Wird diese Funktion auch bei API 21+ wirklich nicht unterstützt?

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

Hinweis: Durch das Hinzufügen von Android:elevation wird in API 21 kein Schatten hinzugefügt.

Example screenshot

Screenshot aus dem Beispiel von dandar3: https://github.com/dandar3/Android-support-design

52
Rolf ツ

Einfach app:borderWidth="0dp" einstellen, lösen Sie diese Probleme für mich.

Hinweis: Vergessen Sie nicht, xmlns:app="http://schemas.Android.com/apk/res-auto" zu Ihrem Root-Layout hinzuzufügen.

Dieses Problem sollte in der nächsten Version der Android-Designbibliothek behoben werden. 

92
Dmytro Danylyk

Für API 21+ müssen Sie app:borderWidth="0dp" und app:elevation="[number]dp" einstellen. Stellen Sie die Höhe ein, die Sie der gewünschten Schattengröße zuweisen möchten:

Example of values for parameter "elevation"

Hier ist ein Beispiel für Code für 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">

Für die unten aufgeführten APIs bis 21 (Android 4) ist zu beachten, dass FAB einen Rand um die Schaltfläche legt, um den Schatten zu zeichnen. Dann sollten Sie so etwas tun (ich verwende diesen Code und arbeite derzeit):

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

Ich ziehe es vor, xmlns:app="http://schemas.Android.com/apk/res-auto" am Anfang des XML-Dokuments zu setzen, aber ich füge es nur ein, um Sie daran zu erinnern;]

31
j_gonfer

Wenn dies für einige immer noch nicht funktioniert, besteht ein wesentlicher Unterschied zwischen:

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

und

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

Die Reihenfolge scheint aus irgendeinem Grund von Bedeutung zu sein (Die erste Bestellung funktioniert, die zweite nicht)

5
user4941227

Ich hatte das gleiche Problem und habe es durch das Löschen dieses Tags aus meiner AndroidManifest.xml zum Laufen gebracht.

Android:hardwareAccelerated="false"

Ich habe es zunächst zusammen mit Android:largeHeap="true" hinzugefügt, weil ich dachte, ich brauche es für eine HeatMap, in der eine große Anzahl von Punkten angezeigt wurde, aber dann wurde mir klar, dass es einfach mit Android:largeHeap="true" funktionieren könnte.

5
Tragalunas

Überprüfen Sie das Manifest in einem Projekt oder in Bibliotheken im Application-Tag und delete them

Android:hardwareAccelerated="false"
Android:largeHeap="true"

Wenn Sie diese Optionen benötigen, funktionieren Schatten und Transformationsanimationen nicht

4
PanCrucian

Wenn es hilft, habe ich verwendet 

Android:tint="@color/myColor"

anstatt

Android:backgroundTint="@color/myColor".

Ersetzen des Farbtons durch backgroundTint holt den Schatten zurück.

0
narko