Erstellen Sie eine Layout-Ressource für Ihre Registerkarten. Es sollte etwas enthalten, das Ihr "Abzeichen" darstellt (eine einfache TextView
wird funktionieren, wenn Sie nur eine Nummer anzeigen möchten). Wenn Sie die Registerkarten erstellen, geben Sie dieses benutzerdefinierte Layout an.
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);
}
Beachten Sie, dass für setText()
richtig funktioniert, muss Ihr Layout ein TextView
mit android:id="@android:id/text1"
(dieser Text nicht die Plakette wird, ist dies der Registerkarte Name).
Wenn Sie das Badge für eine Registerkarte aktualisieren möchten, können Sie die Tab
abrufen und um seine Ansicht bitten, das Badge finden und den Text festlegen.
TabLayout.Tab tab = tabLayout.getTabAt(3); // fourth tab
View tabView = tab.getCustomView();
TextView badgeText = (TextView) tabView.findViewById(R.id.badge_text);
badgeText.setText(...);
Die angenommene Antwort des Beitrags schlägt vor, ein benutzerdefiniertes Layout für die Registerkarten festzulegen, anstatt das Standardlayout zu verwenden. Worum fragst du genau? – Karakuri
Meine App besteht aus 5 Tabs. Die vierte Registerkarte ist ein Fragment, das eine Listenansicht zum Anzeigen von Benachrichtigungen enthält. Wenn der Benutzer die App öffnet, möchte ich einen roten Zähler auf dem Tab-Symbol anzeigen, um die Anzahl der ungelesenen Benachrichtigungen anzuzeigen, bin mir jedoch nicht sicher, wie das geht. @Karakuri – grant
Sie können ein eigenes Layout erstellen und dieses als Ansicht für die Registerkarte festlegen, sodass Ihr Layout anstelle des normalen Texts angezeigt wird. Sie können auch ['getTabAt()'] (https://developer.android.com/reference/android/support/design/widget/TabLayout.html#getTabAt (int)) und ['getCustomView()'] (https://developer.android.com/reference/android/support/design/widget/TabLayout.Tab.html#getCustomView()), um die Ansichten für diesen Tab zu erhalten und Änderungen vorzunehmen. – Karakuri