Bild ändern Floating Action Button Android

Lesezeit: 4 Minuten

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.

  • 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


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);

Benutzeravatar von Umanda
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));

Benutzeravatar von Nenad Štrbić
Nenad Štrbić

In Kotlin wird dies sein:

@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
private fun pauseTimer() {
floatingActionButton.setImageDrawable(getDrawable(R.drawable.ic_baseline_play_arrow))

Benutzeravatar von suprita
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));

enzos Benutzeravatar
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/

Benutzeravatar von Njeru Cyrus
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

1443000cookie-checkBild ändern Floating Action Button Android

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy