Como altero a cor do ícone da guia selecionada do TabLayout?

Estou usando umTabLayout com umViewPager e estou pensando em como posso alterar com mais eficiência a cor do ícone da guia selecionada no TabLayout.

Uma referência perfeita de como isso é implementado éAplicativo do YouTube no Google. Na página principal, existem quatro ícones coloridos em cinza escuro. Quando uma guia específica é selecionada, o ícone da guia fica branco.

Sem bibliotecas de terceiros, como posso obter o mesmo efeito?

Uma solução possível é aparentemente com seletores. Mas, nesse caso, eu precisaria encontrar as versões branca e cinza do ícone e alternar o ícone quando a guia for selecionada ou desmarcada. Gostaria de saber se existe um método mais eficaz em que eu possa destacar a cor do ícone ou algo assim. Não consegui encontrar isso em nenhum tutorial.

EDITAR

A solução que mencionei diretamente acima requer o uso de dois drawables para o ícone de cada guia. Gostaria de saber se existe uma maneira de fazê-lo programaticamente com1 extraível para o ícone de cada guia.