2013-01-09 10 views
43

Próbuję programowo zmienić obraz ImageButton.Przycisk obrazu zmienia się programowo?

Próbuję skopiować ten kod, ale setBackgroundDrawable jest już przestarzałe.

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

Mój przycisk został stworzony przy użyciu języka XML, co następuje:

<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"/> 

Proszę o pomoc.

Dziękuję.

+0

Duplikat tego pytania http://stackoverflow.com/questions/6751875/android-imagebutton-change-programmatically –

Odpowiedz

91

Twój kod próbuje zmienić tło przycisku. nie jego obraz. To są dwie różne rzeczy

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

Spróbuj ((ImageButton) view).setImageDrawable(replacer);

0

Wystarczy wypróbować ten sposób:

((ImageButton) view) .setImageDrawable (zamiennik);

12

spróbować tej jego pracy dla mnie, zmienić obraz tła programowo

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

Powinieneś użyć [setImageResource] (https://developer.android.com/reference/android/widget/ Zamiast ImageView.html # setImageResource (int)). – StupidFox

1

Cześć można użyć następującego kodu

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

nadzieję, że pomóc Ci.

Powiązane problemy