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

Как установить свойство "android: drawableTop" кнопки во время выполнения

Как установить свойство "android:drawableTop" кнопки во время выполнения

4b9b3361

Ответ 1

Использование

button.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);

Устанавливает Drawables (если есть), чтобы появляться слева от, сверху, справа от текста и под ним. Используйте 0, если вам не нужен Drawable. Границы Drawables будут установлены в их внутренние границы.

Если вы используете

button.setCompoundDrawables(left, top, right, bottom);

Устанавливает Drawables (если есть), чтобы появляться слева от, сверху, справа от текста и под ним. Используйте null, если вы не хотите, чтобы там был Drawable. У Drawables уже был setBounds (Rect).

Ответ 2

Drawable top = getResources().getDrawable(R.drawable.image);
button.setCompoundDrawablesWithIntrinsicBounds(null, top , null, null);

Ответ 3

final Drawable drawableTop = getResources().getDrawable(R.drawable.btn_check_buttonless_on);

btnByCust.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {


 btnByCust.setCompoundDrawablesWithIntrinsicBounds(null, drawableTop , null, null);

        }
    });

Ответ 4

        Button button = (Button) findViewById(R.id.button);
        button.setCompoundDrawables(left, top, right, bottom);

Ответ 5

Я использую этот код для использования кнопки "Theme.Holo" с "Пользовательским изображением" слева и изменяю его (изображение) с помощью функции, вызываемой различными способами.

protected void app_dibujarLogojuego() {
    if(bitmaplogojuego!=null){
        bitmaplogojuego.recycle();
        bitmaplogojuego=null;
    }
    Drawable LOGO = null;
    if(verjuego.equals("COSA1")){  LOGO = getResources().getDrawable(R.drawable.img_logo_COSA1);  }
    if(verjuego.equals("COSA2")){  LOGO = getResources().getDrawable(R.drawable.img_logo_COSA2);  }
    if(verjuego.equals("COSA3")){  LOGO = getResources().getDrawable(R.drawable.img_logo_COSA3);  }
    if(verjuego.equals("COSA4")){  LOGO = getResources().getDrawable(R.drawable.img_logo_COSA4);  }

    BUTTON_DECLARED_ID.setCompoundDrawablesWithIntrinsicBounds(LOGO, null , null, null);
}

Ответ 6

 btn.setBackgroundResource(R.drawable.your_image_name_here);

Ответ 7

Если вы используете Kotlin, вы можете использовать метод расширения, чтобы все выглядело элегантно.

fun TextView.setDrawableTop(iconId: Int) {
    val icon = this.context?.resources?.getDrawable(iconId)
    this.setCompoundDrawablesWithIntrinsicBounds(null, icon, null, null)
}

Тогда вы можете использовать это так:

// myTextView: TextView
myTextView.setDrawableTop(R.drawable.ic_happy)

Ответ 8

Создайте такую функцию расширения и установите top drawable следующим образом:

tvAccepted.setTopDrawable(R.drawable.ic_preparing_order_active)

fun TextView.setTopDrawable(icon: Int) {
    this.setCompoundDrawablesRelativeWithIntrinsicBounds(0,icon,0,0)
}

где

setCompoundDrawablesRelativeWithIntrinsicBounds(left/start, top, right/end, bottom)