Ich habe diese Bibliothek verwendet https://github.com/futuresimple/android-floating-action-button. Wie kann ich das Bild der Hauptschaltfläche ändern? Ich möchte das Schaltflächenbild direkt nach der Auswahl einer der kleineren Schaltflächen ändern.
Bild ändern Floating Action Button Android
Aus https://developer.android.com/reference/android/support/design/widget/FloatingActionButton.html
Da diese Klasse von ImageView abstammt, können Sie das angezeigte Symbol über setImageDrawable(Drawable) steuern.
Oder Sie können setImageResource() verwenden:
fab.setImageResource(R.drawable.ic_shopping_cart_white);
Sie können dies in Ihrer XML-Datei verwenden:
android:src="https://stackoverflow.com/questions/30455765/@drawable/icon" // change backgroung icon
app:backgroundTint="@color/icons" // change background color
Verwenden Sie dies im Code:
mFloatingActionButton.setImageResource(R.drawable/icon2);
Umanda
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_btn);
// State 1 -on
fab.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.fab_on));
// State 2 - off
fab.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.fab_off));
Nenad Štrbić
In Kotlin wird dies sein:
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
private fun pauseTimer() {
floatingActionButton.setImageDrawable(getDrawable(R.drawable.ic_baseline_play_arrow))
oben
Ich hatte vor kurzem das gleiche Problem, ich habe es mit der folgenden Option versucht
fab:fab_icon="@drawable/icon"
Und
android:src="@drawable/icon" // change backgroung icon
sogar programmgesteuert versucht
fab_menu_btn.setImageResource();
Nichts hat geklappt.
Lösung: Ersetzen Sie in der build.gradle-Datei der App
compile 'com.getbase:floatingactionbutton:1.10.0'
Zu
compile 'com.github.toanvc:floatingactionmenu:0.8.9'
In .xml-Datei Verwendung:
<toan.android.floatingactionmenu.FloatingActionsMenu
</toan.android.floatingactionmenu.FloatingActionsMenu>
In Aktivitätsdatei:
floatingActionsMenu.setIcon(getResources().getDrawable(R.mipmap.icon));
enzo
In der Materialdesign-Version:
- build.gradle (App)
defaultConfig {
vectorDrawables.useSupportLibrary = true // For srcCompat
}
dependencies {
implementation 'com.google.android.material:material:<version>'
}
- XML (für Set-Icon)
app:srcCompat="@drawable/ic_google"
app:tint="@color/colorGoogle"
Weitere Dokumentation: https://material.io/develop/android/components/floating-action-button/
Njeru Cyrus
Ich hatte das gleiche Problem und habe es geschafft, meine eigene Lösung zu erstellen. Vielleicht findet es jemand anderes auch nützlich. Ich habe die vollständige Antwort auf eine andere Frage gepostet (So legen Sie ein Symbol für getbase FloatingActionsMenu fest), aber dieser hier gepostete Teil ist für die Frage relevant, wie das Bild / Bild der Hauptmenüschaltfläche dynamisch geändert wird, wenn eine der Unterschaltflächen ausgewählt wird. In diesem Fall müssen Sie die Antwort aus der “verknüpften Frage” und der Antwort unten kombinieren.
Um das Symbol auf der Menüschaltfläche zu ändern, wenn Sie einen FloatingActionButton auswählen, kann dies wie folgt implementiert werden:
Menüschaltfläche in XML-Datei erstellen, schwebende Schaltfläche(n) in .java-Datei erstellen (programmgesteuert) Menüschaltfläche festlegen (Farbschaltfläche, farbig gedrückte Schaltfläche und Bild). Fügen Sie dann einfach alle Schaltflächen der Menüschaltfläche hinzu. Sie können die Animation der Menüschaltfläche auch deaktivieren, indem Sie den Code einfach auskommentieren FloatingActionsMenu
Klasse.
Nehmen Sie dann jedes Mal, wenn Sie eine Schaltfläche erstellen, ein Beispiel:
final FloatingActionButton actionA = new FloatingActionButton(getBaseContext());
actionA.setTitle("Familie");
actionA.setIcon(R.drawable.world_map);
actionA.setSize(FloatingActionButton.SIZE_MINI);
actionA.setColorNormalResId(R.color.red);
actionA.setColorPressedResId(R.color.black_semi_transparent);
actionA.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
menuMultipleActions.setMenuButton(R.drawable.icon, R.color.red_transparent, R.color.black_semi_transparent);
Toast.makeText(MainMapView.this, "Action Description", Toast.LENGTH_SHORT).show();
((FloatingActionsMenu) findViewById(R.id.multiple_actions)).collapse();
return;
}
});
Sehen Sie sich die unter dem Link gepostete Antwort an, wie Sie die Klassen konfigurieren und die Menüschaltfläche und die schwebende(n) Schaltfläche(n) definieren.
Der wichtige Teil, den es hier zu beachten gilt, ist also:
menuMultipleActions.setMenuButton(R.drawable.icon, R.color.red_transparent, R.color.black_semi_transparent);
Diese Methode müssen Sie in der hinzufügen FloatingActionsMenu
Klasse. Rufen Sie einfach die Methode nach jedem FloatingActionButton auf, mit dem Sie das Bild aktualisieren möchten.
Weitere Informationen finden Sie unter dem von mir geposteten Link. Wenn Sie also auf einen der FloatingActionButtons klicken.
Im Moment wird die Farbe auf der Menüschaltfläche nicht richtig aktualisiert, aber ich arbeite daran, wenn ich eine Lösung finde, werde ich die Antwort auch hier aktualisieren. Hoffe, das hilft, viel Spaß beim Codieren.
-
Gibt es einen Grund für die -1 oder nur Spaß? Jemand hat diese Lösung ausprobiert und es hat bei ihm nicht funktioniert?
– Thanos
27. Oktober 2016 um 14:09 Uhr
-
Ich habe mit -1 gestimmt, weil es bei mir nicht funktioniert hat. Tatsächlich habe ich einige Zeit, nachdem ich abgestimmt hatte, versucht, die Abstimmung rückgängig zu machen, weil es nicht cool ist, aber ich durfte nicht … Also, sorry :/
– Walentin Filjow
2. Dezember 2016 um 23:09 Uhr
Ich habe das gleiche Problem und es reißt mir alle Haare. Danke für dieses stackoverflow.com/a/35697105/5228412 es funktioniert gut für mich und wünsche anderen, die hierher kommen.
– Purvik Rana
22. März 2016 um 17:41 Uhr