Глядя на конструктор для ColorDrawable, я не вижу версию, которая принимает строку, как в вашем примере. Я вижу тот, который принимает Int. Попробуйте это:
ColorDrawable cd = new ColorDrawable(0xffff0000);
Обратите внимание, что я использовал 8 шестнадцатеричных цифр, а не 6, как в вашем примере. Это также устанавливает альфа-значение.
Редактировать: Оглядываясь назад на некоторый мой собственный код, где я делал нечто подобное, я всегда использовал setBackgroundDrawable () вместо setImageDrawable () для инициализации ImageView сплошным цветом. Не уверен, что это изменит.