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