Android DrawerLayout ne fonctionne pas avec ViewPager?
J'ai mis en œuvre ViewPager à l'intérieur d'un DrawerLayout il fonctionne correctement, mais de Tiroir menu affichage de la liste ne s'affiche pas correctement avec la barre d'action, il affiche en dessous de la ViewPager onglets.Espérons figure suivante vous donnera une idée.
Et je suis en utilisant actionbarsherlock bibliothèque.
Comment puis-je afficher le Tiroir de la liste de menu afficher exactement en dessous de la barre d'action??
Ce que j'ai essayé.
Activité OnCreate():
setContentView(R.layout.activity_layout);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
mLinearLayout = (LinearLayout)findViewById(R.id.ll_viewpager_layout);
//set a custom shadow that overlays the main content when the drawer opens
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
//set up the drawer's list view with items and click listener
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
R.string.app_name, /* "open drawer" description for accessibility */
R.string.app_you /* "close drawer" description for accessibility */
) {
public void onDrawerClosed(View view) {
}
public void onDrawerOpened(View drawerView) {
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
invalidateMenuItems();
mViewPager = new ViewPager(this);
mViewPager.setOnPageChangeListener(this);
mViewPager.setId(1);
mViewPager.setOffscreenPageLimit(7);
mLinearLayout.addView(mViewPager);
mTabsAdapter = new TabsAdapter(this, mViewPager,mActionBar);
mTabsAdapter.addTab(mActionBar.newTab().setText("Fragment"),Fragment.class, null);
mTabsAdapter.addTab(mActionBar.newTab().setText("Fragment"),Fragment.class, null);
mTabsAdapter.addTab(mActionBar.newTab().setText("Fragment"),Fragment.class, null);
mTabsAdapter.addTab(mActionBar.newTab().setText("Fragment"),Fragment.class, null);
De l'activité Mise en page xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll_dashboard_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
<ListView
android:id="@+id/left_drawer"
android:layout_width="200dip"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/abs__background_holo_light"
android:cacheColorHint="#00000000"
android:choiceMode="singleChoice"
android:dividerHeight="1dip" />
</android.support.v4.widget.DrawerLayout>
source d'informationauteur Dinesh Anuruddha
Vous devez vous connecter pour publier un commentaire.
C'est le tiroir du comportement avec barre d'action onglets. Vous ne pouvez pas la modifier.
Trouver certaines des informations officielles dans cette réponse: Navigation Android Tiroir sur les onglets
Et les solutions de contournement pour cette réponse: Obtenir DrawerLayout de Glisser l'une sur l'ActionBar
Je voudrais envisager l'utilisation de cette grande bibliothèque: PagerSlidingTabStrip
Tiroir de la mise en page est parent de vue pager. essayez cette
Je ne suis pas sûr de l'Action de la Barre des onglets , mais vous pouvez utiliser Pager Bande de Tabulation dans la combinaison de la Navigation Tiroir pour obtenir le modèle de navigation similaires, tels que Google Jouer de la Musique , regarder mon post
Votre XML est incorrect.
ListView
doit définirlayout_height
àmatch_parent
au lieu dewrap_content
.EDIT:
également la
DrawerLayout
doit être de niveau supérieur au lieu d'être coincé dansLinearLayout
.Consultez la documentation d'utilisation de
DrawerLayout
: http://developer.android.com/training/implementing-navigation/nav-drawer.htmlAvez-vous utilisé FrameLayout? Le Contenu figurant sur le dernier FrameLayout affichera sur le dessus. Vous cacher que la "couche" et le FrameLayout "au-dessous" (FrameLayout de l'avant-dernier FrameLayout), apparaîtra. Dans Votre DrawerLayout, Tiroir Liste devrait être dans le dernier FrameLayout et Fragments dans l'avant-dernier, dans laquelle vous pouvez afficher le ViewPager.
Pour afficher tiroir mise en page juste en dessous de la barre d'outils de l'utilisation de code ci-dessous dans votre activity_main.xml