Frage

Ich frage mich, wie ich meinen Schaltflächenhintergrund programmgesteuert ändern kann, indem ich Folgendes einstelle onClickListener.

Ich meine, wenn ich meinen Knopf zum ersten Mal drücke, ändert er sein Hintergrundbild und speichert es, auch wenn ich den Finger davon lasse.Und wenn ich es dann das zweite Mal drücke, muss es das Hintergrundbild erneut ändern.Ich weiß, dass ich überprüfen muss, welcher Hintergrund im Moment vorhanden ist, kann aber nicht verstehen, wie es geht.

Ich habe versucht zu benutzen getBackground methode, aber es war nicht hilfreich für mich.Ich habe sogar versucht, eine XML-Datei mit Selektor zu erstellen, die drei Status meiner Schaltfläche enthält, aber es funktionierte nur bis zu dem Moment, in dem ich den Finger von der Schaltfläche loslasse.

War es hilfreich?

Lösung

Sie könnten eine globale Variable haben, die das Hintergrund-Int speichert:

private int backgroundNumber = 0;

Dann könnten Sie in onClick () so etwas tun:

backgroundNumber++;
switch (backgroundNumber % numberOfBackgrounds) { // numberOfBackgrounds is a constant of how many backgrounds there are
    case 1: 
        button.setBackgroundResource(R.drawable.background1);
        break;
    // Do cases for all the backgrounds
}

Ich denke, das sollte funktionieren.

Andere Tipps

Versuchen Sie es so.

Sie wissen, wie viele Staaten Sie haben.Verwenden Sie eine int-Variable (z. B. buttonState ), um den Schaltflächenstatus zu speichern (z. B. buttonState ).zustände 1,2,3.MAXIMALER ZUSTAND = 3).

Beim Klicken einfach den Status ändern und den Hintergrund abhängig vom aktuellen Wert der buttonState-Variablen ersetzen.

 @Click(R.id.button_action)
    void onButtonActionClicked() {
        buttonState = ++buttonState % BTN_STATE_MAX;

        switch (buttonState){
        case BTN_SAVE:
            button.setBackgroundResource(R.drawable.button_save);
            break;
        case BTN_LOAD:
            button.setBackgroundResource(R.drawable.button_load);
            break;
        case BTN_DELETE:
            button.setBackgroundResource(R.drawable.button_delete);
            break;
        }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top