Como _realmente_ alterar programaticamente as cores principal e de destaque no Android Lollipop?

Em primeiro lugar,essa questão faz uma pergunta muito semelhante. No entanto, minha pergunta tem uma diferença sutil.

O que eu gostaria de saber é se é possível alterar programaticamente ocolorPrimary atributo de um tema para umarbitrário cor?

Então, por exemplo, temos:

<style name="AppTheme" parent="android:Theme.Material.Light">
    <item name="android:colorPrimary">#ff0000</item>
    <item name="android:colorAccent">#ff0000</item>
</style>

Em tempo de execução, o usuário decide que deseja usar#ccffff como uma cor primária. Claro que não há como criar temas para todas as cores possíveis.

Não me importo se tiver que fazer coisas hacky, como confiar nos internos privados do Android, desde que funcione usando o SDK público.

Meu objetivo é, eventualmente, ter oActionBar e todos os widgets como umCheckBox para usar essa cor primária.

questionAnswers(8)

yourAnswerToTheQuestion