Изображение менять программно?

Я пытаюсь изменить образ 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 следующим образом:

   

Пожалуйста помоги.

Спасибо.

49
добавлено отредактировано
Просмотры: 2
Дубликат этого вопроса stackoverflow.com/questions/6751875/…</а>
добавлено автор Chinmoy Debnath, источник

6 ответы

ваш код пытается изменить фон кнопки. а не его образ. Это две разные вещи

  ((ImageButton) view).setImageResource(R.drawable.icon2);
100
добавлено

Попытайтесь сделать это для меня, меняйте фоновое изображение программно,

 image.setBackgroundResource(R.drawable.ico);
12
добавлено
Вместо этого следует использовать setImageResource .
добавлено автор StupidFox, источник

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

3
добавлено

Просто попробуйте так:

((ImageButton)) .setImageDrawable (replacer);

1
добавлено

Привет, вы можете использовать следующий код

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

Надеюсь, что это поможет вам.

1
добавлено

Используя Kotlin, вы можете сделать это:

val myImageButton = ImageButton(context).apply({
    background = null
    setImageDrawable(ContextCompat.getDrawable(context, 
                         R.drawable.ic_save_black_24px))
})
0
добавлено