2013-02-20 20 views
22

Um das einfach zu halten: Ich habe Registerkarten in meiner Aktionsleiste, aber die Aktionsleiste nimmt zu viel Platz in Anspruch. Ich möchte diesen zusätzlichen Raum. Ich brauche eine Möglichkeit, die Aktionsleiste zu verstecken, aber halte meine Tabs. Gibt es das überhaupt, um das zu tun? Oder gibt es eine Möglichkeit, wie die Registerkarten in die Aktionsleiste integriert werden können, wie im Querformat? Vielen Dank!Android: ActionBar ausblenden, Tabs beibehalten

+0

Von dem, was ich verstehe, die Registerkarten und ActionBar sind eins, und das System wird kombinieren/teilen sie so, wie sie es für richtig halten. – Whymarrh

+1

@Whymarrh Nein, du * kannst * eine Tabs-only-Aktivität haben (siehe meine Antwort) :) Das beste Beispiel wäre die contscts-App. – Ahmad

+0

@Ahmad sehr cool. Wusste nicht, dass es möglich war. – Whymarrh

Antwort

35

Sie können einen leeren ActionBar haben, dann werden die Registerkarten, um den Raum zu besetzen:

getSupportActionBar().setDisplayShowHomeEnabled(false);    
getSupportActionBar().setDisplayShowTitleEnabled(false); 
+0

Danke, ich werde es versuchen. – user2082169

+3

Technisch gesehen nehmen die "Registerkarten den Platz nur dann ein, wenn sie als Registerkarten angezeigt werden. Aktionsleisten-Registerkarten werden je nach Bildschirmgröße und -ausrichtung auf magische Weise in eine Dropdown-Liste (die gleiche wie in der Listennavigation) geändert. An diesem Punkt wird die Aktionsleiste zum Hosten dieser Dropdown-Liste angezeigt. Wenn Sie ständig Tabs und keine Aktionsleiste möchten, verwenden Sie 'ViewPager' und einen geeigneten Indikator (z. B.' PagerTabStrip') und blenden Sie die Aktionsleiste vollständig aus. – CommonsWare

+0

@CommonsWare ja, absolut richtig. – Ahmad

13

den Code unten Versuchen:

final ActionBar actionBar = getActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    actionBar.setDisplayShowHomeEnabled(false); 
    actionBar.setDisplayShowTitleEnabled(false); 

auch im Code der unten entfernen, das Projekt als Standard hinzugefügt wird erstellt:

public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
} 
+1

Vielen Dank für den zweiten Teil über das onCreateOptionsMenu. Ich fragte mich, warum ich immer noch den weißen Balken über meinen Tabs hatte. – Marty

+0

@Marty Können Sie bitte einen Schnappschuss des Bildschirms einfügen. – Psypher

+0

@Ranjuth: Vielleicht war ich nicht klar, ich wollte dir nur danken, weil dein Kommentar mein Problem endlich gelöst hat. Ich hatte die Teile, wo ich die actionBar ändere, aber ich habe nicht das onCreateOptionsMenu entfernt, das den weißen Balken verursacht hat (weil Titel und Icon leer sind, aber anscheinend noch etwas angezeigt werden muss. Hier sind die [Screenshots] (http: // tinypic.com/view.php?pic=huhapz&s=8). – Marty

3

Dies hat den Trick für mich

actionBar.setDisplayHomeAsUpEnabled(false); 
    actionBar.setDisplayShowTitleEnabled(false); 
    actionBar.setDisplayShowHomeEnabled(false); 

bemerkte ich auch die Linie

getMenuInflater().inflate(R.menu.main, menu); 
1

Ahmad Antwort ist richtig, aber es erfordert API 11. Für niedrigere APIs unterstützen, verwenden Sie diesen Code -

setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 

es zu aktivieren, verwenden -

setNavigationMode(ActionBar.NAVIGATION_MODE_TABS) 
+0

Ist es möglich, dies zu animieren? – noooooooob

+0

Versuchen Sie, diese Antwort zu überprüfen - http://Stackoverflow.com/questions/21949879/hiding-actionbar-timed-and-animating-views/21949939#21949939 – Confuse