2012-10-20 14 views
13

Sono nuovo per Android e Java, ma sono riuscito a insegnare a me stesso e trovare la maggior parte delle risposte alle domande su StackOverflow senza bisogno di fare domande. Fino ad ora ....Cambia pulsante Android: sfondo a diversi drawable

Ecco, ho molti pulsanti colorati che, quando si fa clic, cambiano colore in una gamma di colori diversi.

ci sono molti pulsanti definiti per esempio come:

<Button 
    android:id="@+id/button17" 
    android:layout_width="0dp" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:background="@drawable/orange_button" 
    android:gravity="center" 
    android:onClick="onClick" /> 

Qualcuno potrebbe consigliarmi come cambiare l'androide: sfondo utilizzando codice per modificare l'esempio precedente al giallo, per esempio, quando viene cliccato il pulsante .

Nel codice sottostante clicButton è l'ID del pulsante per il quale ho bisogno di cambiare lo sfondo.

public void onClick(View v) { 
    int id=v.getId(); 
    String clickedButton = getResources().getResourceEntryName(id); 

    Change button to Yellow here?? 

    // Temporary code below to check which button was pressed 
    // and convert its number to an integer to eventually access an array 

    final TextView tvGameTimer = (TextView) findViewById(R.id.tvGameTimer); 
    int buttonNumber = Integer.parseInt(clickedButton.substring(6,8)); 
    tvGameTimer.setText("" + buttonNumber); 

    } 

Sto usando stili di pulsanti personalizzati per definire i colori dei pulsanti:

res/drawable/yellow_button.xml 
res/drawable/blue_button.xml 
res/drawable/red_button.xml 
res/drawable/orange_button.xml 
res/drawable/green_button.xml 

Per ora ho solo bisogno di capire come cambiare il pulsante da Orange a giallo. Posso quindi aggiungere la logica per modificare i colori come e quando l'app richiede.

Molte grazie per qualsiasi aiuto.

risposta

20

Suppongo che il metodo onClick che pubblichi sia dello stesso pulsante di cui stai cercando di cambiare lo sfondo. Usa questo codice.

v.setBackgroundResource(R.drawable.yellow_button); 

Se onClick non è il metodo dello stesso pulsante quindi, utilizzare

findViewById(R.id.button17).setBackgroundResource(R.drawable.yellow_button); 
+1

Wow. Che comunità! Spot on. Il metodo onClick si trova sullo stesso pulsante che ho bisogno di cambiare, quindi la prima soluzione ha funzionato per la prima volta. Ora tutti i pulsanti diventano gialli se cliccati! Ora posso continuare con la logica. Grazie. –

+0

Quando lascio l'attività su un'altra attività e ritorna al primo, lo sfondo non ritorna al drawable originale. – Si8

+0

@ SiKni8 per l'effetto desiderato, è necessario utilizzare jaimin

2
Button btn = (Button) findViewById(R.id.button17); 
btn.setBackground(this.getResources().getDrawable(R.drawable.yellow_button)); 

Prova questo.

+0

Procedimento getDrawable (int) dalle risorse di tipo è obsoleto. –

Problemi correlati