Программно изменить drawableLeft of Button

Я использую кнопку

<Button
        android:id="@+id/zoom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/trans"
        android:drawableLeft="@drawable/left_img"
        android:fontFamily="arial"
        android:text="My Name is "
        android:textSize="50sp" />

и изменив цвет текста с помощью:

zoom.setTextColor(Color.parseColor("voilet"));

но не способен понять how to change its image??

Ответ 1

Попробуйте следующее:

int imgResource = R.drawable.left_img;
button.setCompoundDrawablesWithIntrinsicBounds(imgResource, 0, 0, 0);

Reference

Ответ 2

Самый безопасный способ установить левую растяжку без изменения значений других чертежей (сверху, вправо и снизу):

Drawable[] drawables = textViewExample.getCompoundDrawables();
textViewExample.setCompoundDrawablesWithIntrinsicBounds(leftDrawable, drawables[1], drawables[2], drawables[3]);

Ответ 3

Для этого вы можете использовать

setCompoundDrawables (...);

метод. Имейте в виду, что поставляется с TextView, а не с кнопкой.

Вот как это использовать:

Drawable img = getContext().getResources().getDrawable( R.drawable.yourimage);
img.setBounds( 0, 0, 60, 60 );  // set the image size
txtVw.setCompoundDrawables( img, null, null, null );

Снято с: Как программно установить кнопку drawableLeft на Android?

Ответ 4

Я рекомендую, что вместо использования кнопки вы используете Imageview и добавляете к нему прослушиватель onclick. Таким образом вы можете просто сделать Imageview.setbitmap(bitmap) и создать растровое изображение из одного из ваших чертежей

Ответ 5

просто следуйте этому коду, я надеюсь, что это действительно полезно для вас.

boolean isIconChange;
button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        isIconChange = !isIconChange;
        if(isIconChange){
           button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.like, 0, 0, 0);
           button.setTextColor(Color.BLACK);
        } else {
           button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.dislike, 0, 0, 0);
           button.setTextColor(Color.RED);
        }
    }
});