图像按钮以编程方式更改?

时间:2013-01-09 10:24:23

标签: android imagebutton

我正在尝试以编程方式更改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"/>

请帮忙。

谢谢。

8 个答案:

答案 0 :(得分:109)

您的代码正在尝试更改按钮的背景。不是它的形象。 这是两件不同的事情

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

答案 1 :(得分:14)

试试这个适合我,以编程方式更改背景图片

 image.setBackgroundResource(R.drawable.ico);

答案 2 :(得分:2)

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

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

希望这会对你有所帮助。

答案 3 :(得分:1)

试试这种方式:

  

((ImageButton)view)。setImageDrawable(replacer);

答案 4 :(得分:0)

使用Kotlin,你可以这样做:

val myImageButton = ImageButton(context).apply({
    background = null
    setImageDrawable(ContextCompat.getDrawable(context, 
                         R.drawable.ic_save_black_24px))
})

答案 5 :(得分:0)

对于Kotlin,这对我有用

yourimagebuttonID.setImageResource(R.drawable.ic_check_black_24dp)

答案 6 :(得分:0)

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

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

myImageButton.setOnClickListener {

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

}

答案 7 :(得分:-4)

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