2017-01-08 7 views
0

Ich sah this stack overflow post, aber es half mir nicht zu verstehen, was ich tun musste. Ich verstehe das Konzept, wie ich den Wert des Zählers von meiner Abfrage erhöhen werde.So zeigen Sie den Benachrichtigungszähler in einem Tablayout an?

Aber ich verstehe nicht, was ich verwenden soll. Sollte ich Notification notification; oder BadgeViewer badgeViewer; verwenden? Ich würde einen Weg bevorzugen, wo ich keine Bibliothek importieren muss.

+0

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

+0

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

+0

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

Antwort

2

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(...); 
+0

Ich werde das bald versuchen und Sie wissen lassen, wie es geht. – grant

Verwandte Themen