Как установить цвет фона динамически / прагматично в android kotlin - PullRequest
0 голосов
/ 25 марта 2020

Динамически изменить фон кнопки в Kotlin Android. Ниже мой код. Есть ли другие способы сделать это в Kotlin? Пожалуйста, предложите ..

var btnBackground = findViewById(R.id.buttonBg) as Button
    var bgColor: Int = 1
    btnBackground.setOnClickListener { v ->
        if (bgColor == 1) {
            btnBackground.background = resources.getDrawable(R.drawable.btn_center_gradient)
            bgColor = 2
        } else if (bgColor == 2) {
            btnBackground.background = resources.getDrawable(R.drawable.btn_edge_color)
            bgColor = 3
        } else if (bgColor == 3) {
            btnBackground.background = resources.getDrawable(R.drawable.btn_gradient)
            bgColor=4
        }else if(bgColor==4){
            btnBackground.background=resources.getDrawable(R.drawable.btn_solid_color)
            bgColor=1
        }
    }

1 Ответ

0 голосов
/ 25 марта 2020

Если вам не нравятся все эти if операторы (по одному на каждый нарисованный фон), попробуйте что-то вроде этого:

var btnBackground = findViewById(R.id.buttonBg) as Button
var bgColor: Int = 0
val bgDrawableIds = intArrayOf(
    R.drawable.btn_center_gradient,
    R.drawable.btn_edge_color,
    R.drawable.btn_gradient,
    R.drawable.btn_solid_color
)

btnBackground.setOnClickListener { v ->
    bgColor++
    btnBackground.background = resources.getDrawable(bgDrawableIds[bgColor % bgDrawableIds.size])
}

Если вам нужно добавить больше фонов, просто добавьте их в массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...