1. Работа с кастомными шрифтами.
    В случае, если вы хотите использовать шрифты Roboto в вашем проекте (или какие угодно ttf шрифты), то можно пойти двумя разными путями. Первый путь — подключать эти шрифты к TextView (давайте все виды вьюшек обобщим в этот тип) программно, в коде. Явный минус этого решения — то, что одно и то же действие придется прописывать при каждой инициализации вьюшки.
    В какой-то момент я написал класс ThemeHelper, который немного облегчал эту процедуру.


    В базовой активити я инициализировал ThemeHelper, потом передавал список id вьюшек, в которых надо было применить нужный шрифт.

    Не самый лучший способ, но вполне применимый.
    Однако мне больше в итоге понравился способ с кастомными вьюшками, в которые сразу подгружать тип шрифта в атрибуты (жирный, обычный, курсив и проч.).

  2. Приведение всех вьюшек к единому целому.
    Например, у одной сделал размер 18sp (у заголовка фрагмента, например), а по умолчанию использую 12sp. Потом, спустя какое-то время мне надо создать layout для нового фрагмента (активити), а вот какие размеры я использовал — хз. Можно, конечно, стандартные размеры запихивать в dimensions (и даже нужно — если вы планируете сделать нормальную поддержку разных размеров экранов), но куда проще работать с атрибутами вьюшки.

В общем, этой пары пунктов мне уже хватает за глаза, времени не очень много расписывать, поэтому перейдем к коду.

res/values/attrs.xml

Пример вьюшки