DrawerLayout auf der Oberseite der Actionbar
Beim benutzen der Schublade-layout gibt es eine Möglichkeit, um die overlay-Schublade Blick über die action-bar? Ich will nicht zu verstecken, die action bar, wenn die Schublade angezeigt. Ich will die action-bar, um einfach nur bleiben, sondern werden geschickt in den hintergrund. Ein Beispiel dafür ist die iOS-Play-Music-app...
Meine aktuelle Implementierung verbirgt und zeigt die action-bar, wenn die Schublade sich der Zustand ändert, aber ich weiß nicht wie dieser user experience.
public void onDrawerClosed(View view) {
getActionBar().show();
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getActionBar().hide();
invalidateOptionsMenu();
}
InformationsquelleAutor MCR | 2014-02-19
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Suchte ich im Internet um zu finden, eine gute Lösung für dieses problem und habe nicht gefunden. Also ich hab ein trick, der dies Tat.
Zuerst müssen wir auf Anfrage Aktionsleiste overlay-Funktion. So in
onCreate()
Ihrer Tätigkeit, vorsetContntView()
nennen:requestWindowFeature(com.actionbarsherlock.view.Window.FEATURE_ACTION_BAR_OVERLAY);
Es wird alles einschließlich der navigation Schublade ziehen, die hinter der Aktion bar. Brauchen wir nicht, also müssen wir um den oberen Rand unserer FrameLayout, die Gastgeber, unsere Fragmente in die Aktivität mit der genauen Höhe der action bar. In der layout-Datei der activity müssen wir Folgendes tun:
Wird es nur navigation drawer angezeigt, hinter der action-bar.
Jetzt werden wir ausblenden der Aktionsleiste, wenn der Navigations-Schublade geöffnet wird, auf die Hälfte, und wird es zeigen, wenn die Schublade ist fast geschlossen. Um dies zu tun, benötigen wir die folgenden stellen in der Aktivität:
Wie Sie sehen können habe ich auch den hintergrund ändern drawable der Aktionsleiste, um ihn transparent zu machen, als bevor ich beginne, es zu verbergen, und ändern Sie es zurück mit meiner benutzerdefinierten hintergrund, wenn ich die Karte zurück.
Meine benutzerdefinierten hintergrund ist ein layerListDrawable das ist alles transparent, aber haben ein Teiler unten mit einigen Schatten.
Und um dies zu erreichen habe ich Folgendes definiert layer-Liste in XML:
Wird und sich der hintergrund muss ich aus dieser XML ich den folgenden Code in die Aktivität:
wo R. drawable.shadow_divider ist die XML-Ebene-Liste, die ich zuvor definiert haben.
Es sieht wirklich toll aus! Hoffe es kann jemand helfen.
BEARBEITEN
Ich hatte einen kleinen Fehler hier kann ein Grund sein, der ein Auge manchmal. Hier ist der Feste code:
`
Sollte es paddingTop nicht layout_marginTop!
Ist das die richtige Wirkung bei Android Standard. Wenn Sie möchten, zu emulieren, die iOS-Effekt, dann haben Sie wahrscheinlich, es selbst zu tun, weil AFAIK die Schublade Bestandteil der Bibliothek unterstützt nicht zulassen, dass solche Art von Konfigurationen.
So, jedes mal, wenn ein Programmierer-codes eine Menge nur zu emulieren, einige nette (und sehr wahrscheinlich nicht würdig) iOS-Effekt in Android, eine kleine Katze stirbt...
Ich glaube nicht, dass Sie werde in der Lage sein, dies zu tun mit Android bereitgestellte Navigation Schublade (ohne etwas wirklich hacky), da dies zu tun geht wirklich gegen Android design patterns. Wenn Sie möchten, eine Bibliothek, die das tut, was Sie suchen, ich habe diese Bibliothek vor Android kam mit seiner eigenen widget, und es tut, was du bist suchen für.
Fand ich die Antwort in meiner Frage, auch ein Beispiel-Projekt für eine Referenz. Sie können schauen, um zu sehen, ob es für Sie arbeitet.
Android Navigation Drawer auf der oberen ActionBar
Können Sie erreichen dies mit ActionBarSherlock.
http://actionbarsherlock.com/
Werden Sie in der Lage, es zu tun, aber die Schublade wird so Aussehen, so schlecht, dass Sie es nicht mögen. Ich hatte die gleiche Anforderung und ich landete mit Radio-Buttons angepasst erscheinen als Registerkarten. Sie können auch versuchen, verstecken Sie die Registerkarten, wenn die Schublade öffnet und Umgekehrt, aber das ist sicherlich nicht das, was Sie hier wollen.
Können Sie versuchen, ViewPager, tabbed Anzeige wie PagerTabStrip und/oder TabPageIndicator.
Quelle.