Как установить свойство «android: drawableTop» кнопки во время выполнения - PullRequest
58 голосов
/ 07 февраля 2011

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

Ответы [ 8 ]

125 голосов
/ 07 февраля 2011

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

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

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

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

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

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

45 голосов
/ 02 января 2014
Drawable top = getResources().getDrawable(R.drawable.image);
button.setCompoundDrawablesWithIntrinsicBounds(null, top , null, null);
21 голосов
/ 18 марта 2012
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);

        }
    });
2 голосов
/ 19 августа 2012

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

2 голосов
/ 07 февраля 2011
        Button button = (Button) findViewById(R.id.button);
        button.setCompoundDrawables(left, top, right, bottom);
0 голосов
/ 09 июня 2019

Создайте функцию расширения, подобную этой, и задайте топ для рисования следующим образом.

tvAccepted.setTopDrawable(R.drawable.ic_preparing_order_active)

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

где setCompoundDrawablesRelativeWithIntrinsicBounds (слева / начало, сверху, справа / конец, снизу)

0 голосов
/ 18 мая 2018

Если вы используете 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)
0 голосов
/ 19 июня 2013
 btn.setBackgroundResource(R.drawable.your_image_name_here);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...