A veces las respuestas están muy claras en la propia documentación de Android.
Si miras la documentación del TabLayout el segundo párrafo te dice que si usas un ViewPager para rellenar los Tabs tienes que añadir un evento al PageChangeListener del ViewPager:
viewPager.addOnPageChangeListener(new TabLayoutOnPageChangeListener(tabLayout));
http://developer.android.com/intl/es...TabLayout.html
De todas formas para lo que quieres hacer yo no me complicaría tanto y lo simplificaría usando ViewPagerIndicator, que ya tiene mucho tiempo pero sigue yendo como la seda.
https://github.com/JakeWharton/ViewPagerIndicator