Как настроить иконку (нарисованную) для кнопки в anko?

Я хочу иметь иконку в центре простой кнопки, используя anko. Я старался

button.backgroundResource = R.drawable.arrow_forward

но я получил рисование, покрывающее всю кнопку и получающее цвет фона от его родителя (установка цвета фона для кнопки explicite ничего не делает).

Я старался drawable = ... также с тем же эффектом. Как настроить иконку с помощью anko, чтобы иметь исходное соотношение сторон и быть в центре?

2 ответа

Решение

Прежде всего, чтобы установить иконку / изображение на кнопку, вы должны использовать ImageButton,

Тогда это легко.

imageButton{
     imageResource = R.drawable.ic_cc_checkmark
}

Если вам нужно использовать другие ресурсы или рисовать, то чтобы получить его без получения ресурса не найден Ошибка использования ctx.getDrawable(R.x.y)

Надеюсь, это поможет кому-то

Не уверен, как Анко должен работать. Технически для Android, если у вас есть кнопка с изображением, вы должны сделать:

((ImageButton)findViewById(R.id.yourButtonID)).setImageResource(R.drawable.yourDrawable);

Если кто-то еще пытается этого добиться, вот руководство:

1. Создайте функцию расширения (возможно, в автономном .kt файл или в вашем Activity или Fragment class файл, в котором вы хотите использовать кнопку) вот так:

inline fun ViewManager.materialButton(@StyleRes theme: Int, init: MaterialButton.() -> Unit = {}): MaterialButton {
    return ankoView({ MaterialButton(it) }, theme, init = init)
}
  1. Затем используйте свою кнопку, как и другие представления Anko, например:
materialButton(R.style.App_ThemeOverlay /** some overlay theme **/) {
  icon = context.getDrawable(R.drawable.arrow_forward)
  // ... other regular and material button properties here ...
}
Другие вопросы по тегам