Подтвердить что ты не робот

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

Я пытаюсь изменить образ 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"/>

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

Спасибо.

4b9b3361

Ответ 1

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

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

Ответ 2

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

 image.setBackgroundResource(R.drawable.ico);

Ответ 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())));
}

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

Ответ 4

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

((ImageButton)).setImageDrawable(replacer);

Ответ 5

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

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

Ответ 6

Для котлина это работает для меня

yourimagebuttonID.setImageResource(R.drawable.ic_check_black_24dp)

Ответ 7

Попробуйте ((ImageButton) view).setImageDrawable(replacer);