Как получить цвет фона формы кнопок?

У меня есть 9 пользовательских круглых кнопок, при нажатии на которые открывается палитра цветов, а кнопка "Сохранить" в нижней части окна отображает все данные.

Моя проблема в том, что я не могу получить цвет правильно. И также код может получить данные выше 24 версии. Это также бесполезно. Вывод отладчикаОбразец кода

Этот код вызывается каждый раз, когда нажимается кнопка. Он получает значение цвета из палитры цветов.

GradientDrawable c1, c2;
  Button mcbt_1,mcbt_2;

           // this function gets call everytime button is clicked ,it sets the color to the background and maintain the shape of button to circle.
            public void onColorSelected(int color) {
                switch (buttonSelected) {
                    case 1:
                        c1 = (GradientDrawable) Mcbt_1.getBackground();
                        c1.setColor(color);
                        break;
                    case 2:
                        c2 = (GradientDrawable) Mcbt_2.getBackground();
                        c2.setColor(color);
                        break;

                }
            }

Этот код получает цвет фона кнопок, представленных в представлении. Но основная проблема заключается в поддержке версии. а также данные, которые я получаю, это последнее значение цвета кнопки. например: если int color1 = (-15210) для кнопки 1 и int color2 =(-15700), то когда я получу значение, используя это

   c1 = (GradientDrawable) Mcbt_1.getBackground();
                            color_BT_1 = c1.getColor().getDefaultColor();

из приведенного выше кода я получаю color_BT_1 как -15700 и color_BT_2 как -15700.

 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
                        c1 = (GradientDrawable) Mcbt_1.getBackground();
                        color_BT_1 = c1.getColor().getDefaultColor();

                        c2 = (GradientDrawable) Mcbt_2.getBackground();
                        color_BT_2 = c2.getColor().getDefaultColor();

                       String edColor = color_BT_1 + "," + color_BT_2 ;
}

1 ответ

Решение

Чтобы получить цвет фона ниже API 24, вы должны использовать ColorDrawable. Документация для того же самого может быть найдена здесь документация и в этом ответе также.

Проблема была в том, чтобы сохранить значения цвета, а не получить его.

Надеюсь, это поможет.

Другие вопросы по тегам