Как установить свойство "android:drawableTop
" кнопки во время выполнения
Как установить свойство "android: drawableTop" кнопки во время выполнения
Ответ 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)