Android DrawerLayout no funciona con ViewPager?
He implementado ViewPager dentro de un DrawerLayout que está funcionando correctamente pero la vista de la lista del menú del cajón que no se exhibe correctamente con la barra de acción que exhibirá debajo de las lengüetas de ViewPager. La figura siguiente de la esperanza le dará una idea. Y estoy usando la biblioteca de actionbarsherlock .
- Autocompletar no funciona en archivos XML en una jerarquía particular
- El botón dentro de DrawerLayout no se puede hacer clic
- Necesita hacer la vista de lista en el centro verticalmente para Disposición de cajones en Android
- El método setDrawerListener está obsoleto
- Establecer LayoutParams de ListView cuando se utiliza DrawerLayout con fragmentos
¿Cómo puedo mostrar la vista de la lista del menú de la gaveta exactamente debajo de la barra de acción ??
Lo que he intentado.
Actividad 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);
Diseño de la actividad 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>
- No se puede arrastrar DrawerLayout desde ListView
- Cómo crear DrawerLayout programaticamente
- Barra de herramientas que no aparece en los dispositivos pre lollipop
- Android DrawerLayout y Listview con adaptador personalizado
- Vertical DrawerLayout o SlidingPaneLayout
- ¿Cómo puedo hacer que DrawerLayout se muestre debajo de la barra de herramientas?
- Por qué no puedo bloquear DrawerLayout con gravedad de diseño
- El artículo de DrawerLayout hace clic - ¿Cuándo es el momento adecuado para reemplazar el fragmento?
Es el comportamiento del cajón con las pestañas de la barra de acción . No puedes cambiarlo.
Encuentra alguna información oficial en esta respuesta: Android Navigation Drawer sobre las pestañas
Y las soluciones en esta respuesta: Obtener DrawerLayout para deslizarse sobre la barra de acción
Consideraría usar esta gran biblioteca: PagerSlidingTabStrip
El diseño del cajón es el padre del buscapersonas. prueba esto
<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.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager> <!-- Framelayout to display Fragments --> <FrameLayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- Listview to display slider menu --> <ListView android:id="@+id/list_slidermenu" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@color/list_background" android:choiceMode="singleChoice" android:divider="@color/list_divider" android:dividerHeight="1dp" android:listSelector="@drawable/list_selector" /> </android.support.v4.widget.DrawerLayout>
No estoy seguro acerca de las pestañas de la barra de acciones, pero puedes usar la opción Pager Tab Strip en combinación con el Navigation Drawer para obtener un modelo de navegación similar al de Google Play Música, echa un vistazo a mi publicación
Su XML es incorrecto.
ListView
debe establecer layout_height
como match_parent
lugar de wrap_content
.
EDITAR:
También el DrawerLayout
debe ser toplevel en lugar de ser exprimido en LinearLayout
. Consulte la documentación de cómo utilizar DrawerLayout
: http://developer.android.com/training/implementing-navigation/nav-drawer.html
¿Ha utilizado FrameLayout? El contenido mostrado en el último FrameLayout aparecerá en la parte superior. Oculta esa "capa" y la FrameLayout "debajo" de ella (FrameLayout antes de la última FrameLayout), aparecerá. En su DrawerLayout, la Lista de Gavetas debe estar en el último FrameLayout y Fragments en el segundo último, en el que puede mostrar ViewPager.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_parent_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" > <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="9" android:orientation="vertical" > <!-- Fragments will attach in this container, and have ViewPager --> </LinearLayout> </LinearLayout> </FrameLayout> <!-- attach drawer --> <FrameLayout android:id="@+id/drawer" android:layout_width="300dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@color/grey" android:choiceMode="singleChoice" android:clickable="true" android:divider="@android:color/transparent" android:dividerHeight="0dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00000000" android:orientation="vertical" > <ListView android:id="@+id/navigation_drawer_list" android:layout_width="match_parent" android:layout_height="match_parent" android:choiceMode="singleChoice" android:groupIndicator="@null" /> <!-- </LinearLayout> --> </LinearLayout> </FrameLayout> </android.support.v4.widget.DrawerLayout> </LinearLayout>
Para mostrar el diseño del cajón justo debajo de la barra de herramientas, use el código siguiente en su activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" android:fitsSystemWindows="true"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"/> <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:openDrawer="start"> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:menu="@menu/activity_main_drawer" /> </android.support.v4.widget.DrawerLayout> </LinearLayout>
- DataOutputSteam me está lanzando una 'java.io.IOException: inesperado final de la secuencia'?
- ¿Cómo envío un archivo csv / texto desde un teléfono Android a una impresora wifi?