Как настроить иконку (нарисованную) для кнопки в 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)
}
- Затем используйте свою кнопку, как и другие представления Anko, например:
materialButton(R.style.App_ThemeOverlay /** some overlay theme **/) {
icon = context.getDrawable(R.drawable.arrow_forward)
// ... other regular and material button properties here ...
}