ANDROID Изменить цвет кнопки при нажатии - PullRequest
1 голос
/ 02 августа 2020

У меня есть ScrollView, где я добавил несколько buttons в зависимости от количества ответов, которые я получаю от базы данных на firebase.

private fun onSurveyLoaded(survey: Survey?) {

        survey?.let {
            survey_question.text = it.title
            val ll = LinearLayout(context)
            ll.orientation = LinearLayout.VERTICAL

            if (it.answer_a.isNotEmpty()){
                createButton(it.answer_a, ll)
            }

            if (it.answer_b.isNotEmpty()) createButton(it.answer_b, ll)

            if (it.answer_c.isNotEmpty()) createButton(it.answer_c, ll)

            if (it.answer_d.isNotEmpty()) createButton(it.answer_d, ll)

            if (it.answer_e.isNotEmpty()) createButton(it.answer_e, ll)

            response_list.addView(ll)
        }
    }

    private fun createButton(text: String, ll: LinearLayout): View {
        val view = (requireContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater)
            .inflate(R.layout.survey_item, ll, false)
        lateinit var letter: String

        when(numberOfAnswer){
            0 -> letter = "A"
            1 -> letter = "B"
            2 -> letter = "C"
            3 -> letter = "D"
            4 -> letter = "E"
        }

        numberOfAnswer++

        val str = SpannableString("$letter.    $text")
        str.setSpan(ForegroundColorSpan(ResourcesCompat.getColor(resources, R.color.colorPrimary, null)), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
        str.setSpan(StyleSpan(BOLD), 0,1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

        view.survey_response.text = str

        ll.addView(view)

        return view
    }

Расположение кнопок определено в макет файла survey_item.xml, в котором я использовал кнопки материала.

Кнопки визуализированы правильно, но проблема в том, что я не знаю, как изменить цвет фона кнопок. Я хочу, чтобы при нажатии кнопки ее цвет стал зеленым, а по умолчанию - белым.

...