Alterar a cor sólida da forma em tempo de execução dentro do xml Drawable usado como plano de fundo

Eu tenho um arquivo XML drawable (background.xml):

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
         ...........
        </shape>
    </item>

    <item android:id="@+id/shape_id">
        <shape android:shape="rectangle">
            <solid android:color="#ffefefef" /> 
        </shape>
    </item>

</layer-list>

usado por um LinearLayout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/background"
    android:id="@+id/layout_id"
    >

Agora eu preciso mudar a formashape_id cor sólida em tempo de execução com base em algumas condições. Como fazer isso?

questionAnswers(1)

yourAnswerToTheQuestion