webentwicklung-frage-antwort-db.com.de

Schubladenlayout zum Schieben über die Aktionsleiste

Ich habe ein schieben Schubladenmenü in einer Aktivität, die eine Aktionsleiste mit einigen Registerkarten hat. 

Ich möchte, dass die Schublade über die Laschen gleitet, nicht unter ihnen. 

So sieht es jetzt aus ...

Sliding menu under action bar tabs

Irgendwelche Ideen, wie dies getan werden könnte?

Hinweis: Ich verstehe, dass ich hier möglicherweise einige Konventionen und Muster der Benutzeroberfläche durchbrenne. Wenn dies überhaupt nicht funktioniert, werde ich nach Alternativen suchen. Aber ich möchte, dass dies zuerst funktioniert.

BEARBEITEN: Sehen Sie den Screenshot der Google Play Music App, die genau das macht, was ich brauche. Sehen Sie @ @ CommonsWares Antwort unten, wo er meint, dass ich die Konvention brechen könnte. Aber mit der Play Music App ist es vielleicht auch nicht ganz so selten. 

Proper navigation with tabs sliding correctly

25
Archit

Irgendwelche Ideen, wie dies getan werden könnte?

Führen Sie einen der folgenden Schritte aus:

  • Wechseln Sie von den Aktionsleisten-Registerkarten möglicherweise zu ViewPager und einem Tab-Indikator (PagerTabStrip, TabPageIndicator aus ViewPageIndicator).

  • Prüfen Sie, ob die Implementierung einer vorhandenen Schublade von Drittanbietern noch nicht an die neuen UI-Standards angepasst wurde

  • Gabel DrawerLayout und modifizieren Sie es entsprechend

  • Rollen Sie Ihre eigene Navigationsschublade von Grund auf

Ich verstehe, dass ich hier möglicherweise einige Konventionen und UI-Muster bricht

Richtig .

11
CommonsWare

sie können die folgenden Bibliotheken verwenden, um ein Navigationsmodell zu erhalten, das der Google Play Music App ähnelt.

  • ActionBarSherlock (github)
  • verschachtelte Fragmente (github)
  • PagerSlidingTabStrip (github)
  • NavigationDrawer (Android-Entwicklerseite)
  • Neueste Bibliothek für Support v4 

Ich habe ein Projekt erstellt Navigation Drawer mit Tab Strip Example bei github, schau es dir an. 

Unten ist der Screenshot davon.

Navigation-drawer-page-sliding-tab-strip

22
Balaji

Überprüfen Sie auch diese Bibliothek http://www.androidviews.net/2013/04/pager-sliding-tabstrip/ Der Kerl hat einen tollen Job gemacht. Sie können es mit einer Navigationsleiste verwenden und es funktioniert perfekt.

3
alecnash

Endlich eine saubere Möglichkeit, eine Navigationsleiste über Schieberegler in diesem Blog zu erreichen http://www.paulusworld.com/technical/Android-navigationdrawer-sliding-tabs

3
user2814778

Dies kann OHNE eine Drittanbieter-Bibliothek erfolgen. Schauen Sie sich die Sliding Tabs-Beispiele von Google an

     SlidingTabsBasic:   http://developer.Android.com/samples/SlidingTabsBasic/project.html
     SlidingTabsColors:  http://developer.Android.com/samples/SlidingTabsColors/project.html

Schauen Sie sich auch diesen tollen Link an: http://manishkpr.webheavens.com/Android-sliding-tabs-example/ Funktionierte für mich wie ein Zauber. :)

1
user3316561

Actionbar Navigaton Drawer und SwipeTabs können nicht gleichzeitig verwendet werden. Sie sollten Navigation Drawer mithilfe von Actionbar und Swipetabs mit einfachen Tabhosts implementieren. Sie können Tabhost für Registerkarten und Fragmente für die Innenansicht der einzelnen Registerkarten verwenden. Fragmente sollten über den Viewpager verwendet werden, um einen Bildlauf-/Wischeffekt bereitzustellen. Verbinden Sie Tabs und Viewpager über ihre Methoden miteinander

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >

<TabHost
    Android:id="@+id/tabHost"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical" >

        <HorizontalScrollView
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:fillViewport="true"
            Android:scrollbars="none" >

            <TabWidget
                Android:id="@Android:id/tabs"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content" >
            </TabWidget>
        </HorizontalScrollView>

        <FrameLayout
            Android:id="@Android:id/tabcontent"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent" >

            <Android.support.v4.view.ViewPager
                Android:id="@+id/viewPager_home"
                Android:layout_width="match_parent"
                Android:layout_height="match_parent" />
        </FrameLayout>
    </LinearLayout>
</TabHost>

0
FAK

Ich habe Registerkarten im Fragment der Schublade ... Ich löse dieses Problem durch Hinzufügen 

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

in onDrawerClosed() und getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); in onDrawerOpend()-Methode.

Ich hoffe, dies wird dir helfen.

0
Jinal Rathod

Für die Musikwiedergabe wird kein Standard-ActionBar.Tab .__ verwendet. Dann können Sie Ihren eigenen Tab-Container implementieren, indem Sie HorizontalScrollView Erweitern und mit ViewPager zusammenarbeiten

0
tarn

Diese Anforderung konnte ich erreichen, indem der navigationMode in den Funktionen OnDrawerClosed und onDrawerOpened festgelegt wurde. Es ist ein temporärer Fix, da die Registerkarten nicht sofort verschwinden. 

  public void onDrawerClosed(View view) {
          getActionBar().setTitle(mTitle);
          if(getActionBar().getTabCount()>0) //Add tabs when the fragment has it
          getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);               
                        ...
                    }

   public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(mDrawerTitle);
            getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);              
                    ..

                    }

Wenn Sie einige Fragmente mit Registerkarten und andere ohne Tabs haben, vergessen Sie nicht, die Registerkarten inCreateView des Fragments zu entfernen, das keine Registerkarten enthält. 

 getActionBar().removeAllTabs();
0
user2814778

Ich hatte das gleiche Problem, aber die einzige Lösung, die ich fand, bestand darin, Tabs innerhalb des inneren Fragments zu verwenden (nicht fragmentActivity). Ich weiß nicht, ob es die beste Lösung war, das einzige Problem, das ich hatte, war das Styling dieser Registerkarten, für den Rest funktioniert es perfekt

0
xgc1986