9

Czy możliwe jest dynamiczne usuwanie/przywracanie paska kart z paska akcji?Android ActionBar: wyświetlać/ukrywać karty dynamicznie?

Do tej pory robiłem to, zmieniając tryb nawigacji na pasku akcji. Użyłem poniższy kod, aby usunąć i przywrócić pasek kart:

@Override 
public void restoreTabs() {  
    getSupportActionBar() 
    .setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    this.supportInvalidateOptionsMenu(); 
} 

@Override 
public void removeTabs() {  
    getSupportActionBar() 
    .setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    this.supportInvalidateOptionsMenu(); 
} 

który działa, ale nie jest to duży problem: Everytime zgłoszę setNavigationMode, onTabSelected nazywa się w TabListener oraz zakładka obecnie opend zostanie odtworzony.

Odpowiedz

1

Działa to zgodnie z przeznaczeniem, ponieważ karta jest wybierana, ponieważ nie była wyświetlana. Proponuję, abyś sam wykonał kontrolę w TabListener.

3
public void onDrawerClosed(View view) { 
    getActionBar().setTitle(mTitle); 
    // calling onPrepareOptionsMenu() to show action bar icons 
    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    invalidateOptionsMenu(); 
} 

public void onDrawerOpened(View drawerView) { 
    getActionBar().setTitle(mDrawerTitle); 
    // calling onPrepareOptionsMenu() to hide action bar icons 
    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    invalidateOptionsMenu(); 
} 
4

Aby usunąć wypustki actionbar dynamicznie, wystarczy:

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 

Aby dodać je na bieżąco, po prostu zrobić:

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

Na drugim przypadku zakłada się, że po ustawieniu trybu nawigacji, dodasz także zakładki do paska akcji, podobnie do tego:

for (int resourceId : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(resourceId) 
       .setTabListener(this)); 
} 
Powiązane problemy