2014-09-29 32 views
6

Sono nuovo al concetto di badge. Nella mia applicazione voglio mostrare i badge su una scheda. Per questo ho usato il file android-viewbadger.jar Android ViewBadger si sta lavorando bene con 4 schede,Tabhost - imposta la posizione del badge nelle schede Android

TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs); 
    badge1 = new BadgeView(this, tabs, 1); 
    badge1.setText("155"); 
    badge1.setBadgePosition(BadgeView.POSITION_BOTTOM_RIGHT); 
    badge1.toggle(); 

enter image description here

quando aggiungo una scheda di più qui che sarà simile a questa

enter image description here

ho già utilizzare queste proprietà distintivo

badge1.setPadding(left, top, right, bottom); 
    badge1.setTextSize(15); 
    badge1.setBadgeMargin(5,5); 
    badge1.setWidth(10); 
+0

http://kevinpelgrims.com/blog/2014/06/24/adding-a-badge-to -an-actionbar-tab – Shijil

risposta

1

L'impostazione del badge su TabWidget mostrerà il badge solo nello spazio disponibile tra il drawable e il limite di TabWidget, quindi l'aggiunta di altre schede comprimerà il badge. Invece usando setIndicator (String, Drawable), provate questo:

ImageView iv = new ImageView(this); 
    iv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
    iv.setImageResource(R.drawable.whoseinterested); 
    whosespec.setIndicator(iv); 
    Intent whoseIntent = new Intent(this, BlankActivity.class); 
    whosespec.setContent(whoseIntent); 

    tabHost.addTab(whosespec); 

    badge1 = new BadgeView(this, iv); 
    badge1.setText("155"); 
    badge1.setTextSize(15); 
    badge1.setBadgeBackgroundColor(Color.BLACK); 
    badge1.setTextColor(Color.WHITE); 
    badge1.toggle(); 

Screenshot: screen

Si può chiaramente vedere nella vostra screenshot che l'immagine nella scheda con il distintivo è spostato verso il centro. Se non c'è spazio tra l'immagine e il suo bordo, non verrà visualizzato correttamente.

Origine: Testato da solo.

+0

questo è perfettamente risposta e funziona come un incantesimo @berserk grazie mille –

+1

@AliAshiq contento che abbia aiutato :) – berserk

1

Hi impostato distintivo nel bambino di vista della scheda in ImageView

provare questo

TabWidget tabsw = (TabWidget) rootView.findViewById(android.R.id.tabs); 
     ViewGroup viewgroup = (ViewGroup) tabsw.getChildAt(0); 
     viewgroup.getChildCount(); 

     for (int i = 0; i < viewgroup.getChildCount(); i++) { 
      if (viewgroup.getChildAt(i) instanceof ImageView) { 
       ImageView new_name = (ImageView) viewgroup.getChildAt(i); 
       badge7 = new BadgeView(getActivity(),new_name); 
       badge7.setText("9"); 
       badge7.setTextSize(9); 
       badge7.setBadgeMargin(0,0); 
       badge7.setBadgePosition(BadgeView.POSITION_TOP_RIGHT); 
       badge7.toggle(); 

      } 
     } 
+0

http://stackoverflow.com/questions/26402748/tabhost-android-viewbadger-badge -issue dai un'occhiata a questa domanda @calinbros –