Починаючи з якоїсь версії Android (4? 5?) TabWidget (вкладки) показує піктограми лише якщо вкладка не має підпису або змінна що містить підпис дорівнює null. Показу піктограми одночасно з підписом можна досягти скориставшись варіантом методу setIndicator який в якості аргументу приймає обʼєкт типу View. Спершу в файлі описується те з яких компонентів буде складатися вкладка, наприклад, відцентрований над TextView ImageView з картинкою, потім з розмітки в файлі створюється шматочок UI, поміщається в екземпляр класу View і передається методу setIndicator. Але! Але Android перестає відмічати вибрану вкладку і те що вкладка натиснена, але ще не вибрана. Закінчилось все тим що я знайшов Custom Android Tabs.

  • Для кожної вкладки в якості фону вказується файлик з XML який описує обʼєкт типу StateListDrawable і який буде змінювати фон в залежності від стану вкладки.
  • Створюються ще XML файли в якийх описуються обʼєкти які будуть використовуватися як фон і на які є посилання в попередньому файлику.

Кому в Google так не догодили вкладки з текстом і картинками що мені тепер доводиться так страждати через отаку хуйню я не знаю, але це просто срань якась. Автор статті пише що Google ще й розділювачі між вкладками прибрав. До речі, вищі та ширші вкладки хоч і займають зайве місце, проте зручнші і краще виглядають, а зміна фону і імітація натисненою клавіші це набагато краще ніж індикатор у вигляді тонкої смужки під поточною вкладкою.