2013-01-09 3 views
43

Sto provando a cambiare l'immagine di ImageButton in modo programmatico.Imagebutton cambia a livello di codice?

Sto provando a copiare questo codice, ma setBackgroundDrawable è già deprecato.

public void giveClue(View view) { 
    Drawable replacer = getResources().getDrawable(R.drawable.icon2); 
    ((ImageButton) view).setEnabled(false); 
    ((ImageButton) view).setBackgroundDrawable(replacer); 
    gameAdapter.giveClue(game); 
} 

mio pulsante è stata creata usando XML come segue:

<ImageButton 
     android:id="@+id/ImageButton2" 
     android:layout_width="24dp" 
     android:layout_height="22dp" 
     android:layout_alignTop="@+id/imageButton1" 
     android:layout_toLeftOf="@+id/ImageButton3" 
     android:src="@drawable/icon" 
     android:onClick="giveClue"/> 

prega di aiuto.

Grazie.

+0

Duplicato di questa domanda http://stackoverflow.com/questions/6751875/android-imagebutton-change-programmatically –

risposta

91

il codice sta tentando di modificare lo sfondo del pulsante. non la sua immagine. Queste sono due cose diverse

((ImageButton) view).setImageResource(R.drawable.icon2); 
-3

Prova ((ImageButton) view).setImageDrawable(replacer);

0

Basta provare in questo modo:

((ImageButton) Vista) .setImageDrawable (surrogato);

12

Prova questo il suo lavoro per me, cambiare l'immagine di sfondo di programmazione,

image.setBackgroundResource(R.drawable.ico); 
+0

È necessario utilizzare [setImageResource] (https://developer.android.com/reference/android/widget/ Invece ImageView.html # setImageResource (int)). – StupidFox

1

Hi è possibile utilizzare il seguente codice

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) 
{ 
    ((ImageButton) view).setImageResource(getResources().getIdentifier("icon2", "drawable", getPackageName())); 
} 
else 
{ 
    ((ImageButton) view).setImageDrawable(getDrawable(getResources().getIdentifier("icon2", "drawable", getPackageName()))); 
} 

auguriamo che questo Aiutarti.