2017-01-08 3 views
0

Я видел this stack overflow post, но это не помогло мне понять, что я должен был сделать. Я понимаю концепцию того, как я собираюсь увеличить значение счетчика из моего запроса.Как показать счетчик уведомлений в табличке?

Но я не понимаю, что я должен использовать. Должен ли я использовать Notification notification; или BadgeViewer badgeViewer;? Я бы предпочел, чтобы мне не нужно было импортировать библиотеку.

+0

Принятый ответ сообщения предполагает установку пользовательского макета для вкладок вместо использования макета по умолчанию. О чем именно вы спрашиваете? – Karakuri

+0

Мое приложение состоит из 5 вкладок. Четвертая вкладка - это фрагмент, который содержит представление списка для отображения уведомлений. Когда пользователь открывает приложение, я хочу показать красный счетчик с помощью значка вкладки, чтобы показать количество непрочитанных уведомлений, но я не уверен, как это сделать. @Karakuri – grant

+0

Вы можете создать свой собственный макет и установить его как представление для вкладки, чтобы он отображал ваш макет вместо обычного текста. Вы также можете использовать ['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

ответ

2

Сделайте ресурс макета для своих вкладок. Он должен включать в себя что-то, что представляет ваш «значок» (простой 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(...); 
+0

Я попробую это скоро и дам вам знать, как это происходит. – grant

Смежные вопросы