ColorDrawable всегда фиолетовый при отображении в ячейке календаря Caldroid
Я работаю над календарем для приложения. Я использую Caldroid. В некоторые даты я хотел бы изменить цвет фона. Если дата, которую я хотел бы по-другому раскрасить, также является текущей датой, тогда я хочу, чтобы в ячейке была красная граница, а также этот цвет. Тем не менее, все рисунки, которые я пытаюсь отобразить, всегда становятся фиолетовыми. Почему это? Моя логика для отображения нарисованного выглядит следующим образом:
ColorDrawable black = new ColorDrawable(R.drawable.black);
ColorDrawable green = new ColorDrawable(R.drawable.green);
ColorDrawable yellow = new ColorDrawable(R.drawable.yellow);
ColorDrawable blue = new ColorDrawable(R.drawable.blue);
ColorDrawable blackBordered = new ColorDrawable(R.drawable.red_border_for_black);
ColorDrawable greenBordered = new ColorDrawable(R.drawable.red_border_for_green);
ColorDrawable yellowBordered = new ColorDrawable(R.drawable.red_border_for_yellow);
ColorDrawable blueBordered = new ColorDrawable(R.drawable.red_border_for_blue);
if(differenceInDatesGreen < differenceInDatesBlack) {
if (datesEqual(today.toString(), trashDay.toString())) {
Log.d("Where in caldroid fragment setter", "greenBordered");
caldroidFragment.setBackgroundDrawableForDate(greenBordered, trashDay);
}
else {
Log.d("Where in caldroid fragment setter", "green");
caldroidFragment.setBackgroundDrawableForDate(green, trashDay);
}
} else {
if (datesEqual(today.toString(), trashDay.toString())) {
Log.d("Where in caldroid fragment setter", "blackBordered");
caldroidFragment.setBackgroundDrawableForDate(blackBordered, trashDay);
}
else {
Log.d("Where in caldroid fragment setter", "black");
caldroidFragment.setBackgroundDrawableForDate(black, trashDay);
}
}
if (datesEqual(today.toString(), neighborhoodEvent.toString())) {
Log.d("Where in caldroid fragment setter", "yellowBordered");
caldroidFragment.setBackgroundDrawableForDate(yellowBordered, neighborhoodEvent);
}
else {
Log.d("Where in caldroid fragment setter", "yellow");
caldroidFragment.setBackgroundDrawableForDate(yellow, neighborhoodEvent);
}
if (datesEqual(today.toString(), neighborhoodEvent.toString())) {
Log.d("Where in caldroid fragment setter", "blueBordered");
caldroidFragment.setBackgroundDrawableForDate(blueBordered, specialEvent);
} else {
Log.d("Where in caldroid fragment setter", "blue");
caldroidFragment.setBackgroundDrawableForDate(blue, specialEvent);
}
caldroidFragment.setTextColorForDate(R.color.White, trashDay);
caldroidFragment.setTextColorForDate(R.color.White, neighborhoodEvent);
caldroidFragment.setTextColorForDate(R.color.White, specialEvent);
Весь мой нарисованный XML-код точно такой же, за исключением цветовых различий. Drawable для черного без красной рамки
<?xml version="1.0" encoding="utf-8"?>
<item
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp">
<shape android:shape="rectangle" >
<stroke
android:width="0dp"
android:color="@color/Black" />
<solid android:color="@color/Black" />
</shape>
</item>
Чертеж для черного с красной каймой
<?xml version="1.0" encoding="utf-8"?>
<item
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp">
<shape android:shape="rectangle" >
<stroke
android:width="2dp"
android:color="@color/Red_For_Border" />
<solid android:color="@color/Black" />
</shape>
</item>
Вся помощь приветствуется!!!
1 ответ
ColorDrawable(int)
конструктор ожидает значение цвета; Вы передаете ему идентификатор ресурса.
Правильное использование будет одним из следующих:
new ColorDrawable(ContextCompat.getColor(this, R.color.my_color));
new ColorDrawable(Color.RED);
new ColorDrawable(0xffff0000);