66

我正在尝试以编程方式更改 ImageButton 的图像。

我正在尝试复制此代码,但 setBackgroundDrawable 已被弃用。

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

我的按钮是使用 xml 创建的,如下所示:

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

8 回答 8

149

您的代码正在尝试更改按钮的背景。不是它的形象。这是两个不同的东西

  ((ImageButton) view).setImageResource(R.drawable.icon2);
于 2013-01-09T10:41:11.463 回答
19

试试这个对我有用,以编程方式更改背景图像,

 image.setBackgroundResource(R.drawable.ico);
于 2013-01-09T10:46:27.463 回答
3

您好,您可以使用以下代码

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

希望这会帮助你。

于 2015-04-08T01:08:03.587 回答
1

试试这种方式:

((ImageButton) 视图).setImageDrawable(replacer);

于 2013-01-09T10:27:14.580 回答
0

使用 Kotlin,您可以这样做:

val myImageButton = ImageButton(context).apply({
    background = null
    setImageDrawable(ContextCompat.getDrawable(context, 
                         R.drawable.ic_save_black_24px))
})
于 2018-04-20T10:20:28.730 回答
0

对于科特林,这对我有用

yourimagebuttonID.setImageResource(R.drawable.ic_check_black_24dp)
于 2019-07-16T15:01:30.843 回答
0

在 Kotlin 中,您可以使用以下代码:

val myImageButton = findViewById<ImageButton>(R.id.myImageButton)  

myImageButton.setOnClickListener {

     (myImageButton as ImageButton).setImageResource(R.drawable.myIcon) 

}
于 2019-12-24T13:51:11.263 回答
-4

尝试((ImageButton) view).setImageDrawable(replacer);

于 2013-01-09T10:26:56.590 回答