In unserer Android-App müssen wir eine schwebende Aktionsschaltfläche erstellen, die nicht der Standardkreis ist, sondern ein Quadrat mit drei abgerundeten Ecken. Die Fabrik sieht wie im Bild unten aus:
Ich habe es geschafft, ein solches Formular zu erstellen, weiß aber nicht, wie ich es in meiner Fabrik anwenden soll oder ob es überhaupt möglich ist. Die XML-Datei für die Form sieht folgendermaßen aus:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="@color/red" />
<corners
Android:topLeftRadius="90dp"
Android:topRightRadius="90dp"
Android:bottomRightRadius="90dp"/>
</shape>
Ich habe versucht, die Form mit zu ändern
Android:src="@drawable/my_shape"
dies ändert jedoch nur das Symbol in meiner Schaltfläche. Ich denke ich muss FloatingActionButton erweitern, aber ich habe keine Ahnung wie.
Gibt es eine Möglichkeit, die Form der Fabrik zu ändern? Wenn jemand dies bereits erreicht hat, würde ich mich über eine Probe freuen.
Der von den Unterstützungsbibliotheken bereitgestellte FloatingActionButton kann nicht erweitert werden, da die Methoden, die ersetzt werden müssten, auf privat gesetzt sind. Material Components (der offizielle AndroidX-Ersatz für die Unterstützungsbibliothek) hat Shape Theming auf der roadmap für ~ Oktober-Dezember, wodurch Sie dies offiziell und problemlos tun können (ohne den Blick erweitern müssen).
Es ist jedoch noch nicht verfügbar. In der Zwischenzeit habe ich customFloatingActionButton von robertlevonyan gegabelt. Mit ein paar geringfügigen Änderungen können Sie Ihre eigene Form verwenden. Der Quellcode ist hier verfügbar.
Um es mit Gradle zu Ihrem Projekt hinzuzufügen, müssen Sie jitpack verwenden. Sie können es so hinzufügen:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Dann implementiere meine Gabel:
implementation 'com.github.JediBurrell:customFloatingActionButton:-SNAPSHOT'
Als Nächstes erstellen wir die Form. Die von Ihnen erstellte sollte funktionieren.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle">
<corners
Android:topLeftRadius="@dimen/fab_circle_radius"
Android:topRightRadius="@dimen/fab_circle_radius"
Android:bottomRightRadius="@dimen/fab_circle_radius" />
<solid Android:color="@color/colorAccent" />
</shape>
Fügen Sie es schließlich Ihrem Layout hinzu (weitere FAB-Optionen sind im Github-Repo aufgeführt):
<com.jediburrell.customfab.FloatingActionButton
Android:id="@+id/floating_action_button"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom|right"
Android:layout_margin="16dp"
app:fabType="custom"
app:fabShape="@drawable/fab_teardrop"
app:fabIcon="@drawable/ic_add_24dp"
app:fabColor="@color/red" />
Und so sieht das aus:
In Ihrer Frage haben Sie gesagt, dass Sie versucht haben, Android:src
anzupassen, was offensichtlich der falsche Ansatz ist, da es sich hier um den Inhalt von FloatingActionButton
handelt.
Der Android:background
-Parameter ändert Ihre Form. Beachten Sie, dass es soll rund sein .
Ich denke, diese Frage ist nur kein Duplikat , weil diese andere Frage nur nach der Farbe fragt.
Sie müssen dies in Ihrer XML-Datei verwenden:
Android:background="@drawable/my_shape"
Sie suchen nach dem Hintergrund Ihrer Schaltfläche
Android:background="@drawable/my_shape"