Сделайте ресурс макета для своих вкладок. Он должен включать в себя что-то, что представляет ваш «значок» (простой TextView
будет работать, если вы просто хотите показать номер). Когда вы создаете вкладки, укажите этот настраиваемый макет.
private TabLayout tabLayout;
// in onCreate()
tabLayout = (TabLayout) findViewById(R.id.tabs);
for (int i = 0; i < NUM_TABS; i++) {
TabLayout.Tab tab = tabLayout.newTab()
.setText("tab name")
.setCustomView(R.layout.custom_tab);
tabLayout.addTab(tab);
}
Обратите внимание, что для setText()
, чтобы работать должным образом, ваш макет нуждается в TextView
с android:id="@android:id/text1"
(это не текст значок, это имя вкладки).
Если вы хотите обновить значок вкладки, вы можете получить Tab
и попросить его посмотреть, найти значок и установить его текст.
TabLayout.Tab tab = tabLayout.getTabAt(3); // fourth tab
View tabView = tab.getCustomView();
TextView badgeText = (TextView) tabView.findViewById(R.id.badge_text);
badgeText.setText(...);
Принятый ответ сообщения предполагает установку пользовательского макета для вкладок вместо использования макета по умолчанию. О чем именно вы спрашиваете? – Karakuri
Мое приложение состоит из 5 вкладок. Четвертая вкладка - это фрагмент, который содержит представление списка для отображения уведомлений. Когда пользователь открывает приложение, я хочу показать красный счетчик с помощью значка вкладки, чтобы показать количество непрочитанных уведомлений, но я не уверен, как это сделать. @Karakuri – grant
Вы можете создать свой собственный макет и установить его как представление для вкладки, чтобы он отображал ваш макет вместо обычного текста. Вы также можете использовать ['getTabAt()'] (https://developer.android.com/reference/android/support/design/widget/TabLayout.html#getTabAt (int)) и ['getCustomView()'] (https://developer.android.com/reference/android/support/design/widget/TabLayout.Tab.html#getCustomView()), чтобы получить представления для этой вкладки и внести изменения. – Karakuri