Domanda

chiedendosi come posso cambiare il mio background con il pulsante programmaticamente impostando onClickListener.

Intendo che quando premetto innanzitutto il mio pulsante cambia la sua immagine di sfondo e salvalo anche se rilasciano il dito da esso.E poi se lo prego la seconda volta deve modificare di nuovo l'immagine di sfondo.So che devo controllare che sfondo c'è al momento, ma non riesco a capire come farlo.

Ho provato ad usare il metodo getBackground ma non è stato utile per me.Ho anche provato a creare un file XML con selettore che contiene tre stato del mio pulsante, ma funzionava solo fino al momento in cui rilasciano il dito dal pulsante.

È stato utile?

Soluzione

Potresti avere una variabile globale che memorizza lo sfondo int:

private int backgroundNumber = 0;
.

Allora, in onclick () potresti fare qualcosa del genere:

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
}
.

Penso che dovrebbe funzionare.

Altri suggerimenti

Prova così.

Sai quanti stati hai.Utilizzare una variabile int (per non perdere il pulsante) per salvare lo stato del pulsante (es. Stati 1,2,3. Max_state= 3).

On Fare clic su Basta cambiare stato e sostituire lo sfondo in base al valore della variabile a pulsante corrente.

 @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;
        }
    }
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top