2013-01-09 41 views
43

Tôi đang cố gắng thay đổi hình ảnh của ImageButton theo lập trình.Thay đổi hình ảnh theo chương trình?

Tôi đang cố gắng sao chép mã này, nhưng setBackgroundDrawable đã không còn được dùng nữa.

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

nút My được tạo bằng xml như sau:

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

Xin vui lòng giúp.

Cảm ơn bạn.

+0

Sao chép câu hỏi này http://stackoverflow.com/questions/6751875/android-imagebutton-change-programmatically –

Trả lời

91

mã của bạn đang cố gắng thay đổi nền của nút. không phải hình ảnh của nó. Đó là hai điều khác nhau

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

Hãy thử ((ImageButton) view).setImageDrawable(replacer);

0

Chỉ cần thử theo cách này:

((ImageButton) xem) .setImageDrawable (replacer);

12

Hãy thử điều này nó làm việc cho tôi, thay đổi hình nền theo chương trình,

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

Bạn nên sử dụng [setImageResource] (https://developer.android.com/reference/android/widget/ Thay vào đó hãy sử dụng ImageView.html # setImageResource (int)). – StupidFox

1

Hi bạn có thể sử dụng đoạn mã sau

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

Hope chí này giúp bạn.

Các vấn đề liên quan