Android的DrawerLayout不工作与ViewPager? [英] Android DrawerLayout is not working with ViewPager?

查看:439
本文介绍了Android的DrawerLayout不工作与ViewPager?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已实施 ViewPager DrawerLayout 它工作正常,但抽屉菜单列表视图中显示不正常的动作条​​上会显示以下ViewPager tabs.Hope以下图会给你一个想法。 而我使用的 actionbarsherlock 库。

如何显示操作栏正下方的抽屉菜单列表视图??

什么我都试过了。

活动的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);

        抽屉打开时//设置自定义影子覆盖的主要内容
        mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,GravityCompat.START);
        //设置抽屉的列表视图项,然后单击监听器

        mDrawerList.setOnItemClickListener(新DrawerItemClickListener());

        mDrawerToggle =新ActionBarDrawerToggle(
                此时,/ *主机活动* /
                mDrawerLayout,/ * DrawerLayout对象* /
                R.drawable.ic_drawer,/ *导航抽屉图像,以取代上插入符* /
                R.string.app_name,/ *开放抽屉说明访问* /
                R.string.app_you / *关闭抽屉说明访问* /
                ){
            公共无效onDrawerClosed(查看视图){
            }

            公共无效onDrawerOpened(查看drawerView){
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);
        invalidateMenuItems();

        mViewPager =新ViewPager(本);
        mViewPager.setOnPageChangeListener(本);
        mViewPager.setId(1);
        mViewPager.setOffscreenPageLimit(7);

        mLinearLayout.addView(mViewPager);

        mTabsAdapter =新TabsAdapter(这一点,mViewPager,mActionBar);

        mTabsAdapter.addTab(mActionBar.newTab()的setText(碎片),Fragment.class,空);

        mTabsAdapter.addTab(mActionBar.newTab()的setText(碎片),Fragment.class,空);

        mTabsAdapter.addTab(mActionBar.newTab()的setText(碎片),Fragment.class,空);

        mTabsAdapter.addTab(mActionBar.newTab()的setText(碎片),Fragment.class,空);
 

活动布局的xml:

 < XML版本=1.0编码=UTF-8&GT?;
< android.support.v4.widget.DrawerLayout
        的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
        机器人:ID =@ + ID / drawer_layout
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:方向=垂直>

                <的LinearLayout
            机器人:ID =@ + ID / ll_dashboard_viewpager
            机器人:layout_width =match_parent
            机器人:layout_height =match_parent
            机器人:方向=垂直/>

        <的ListView
            机器人:ID =@ + ID / left_drawer
            机器人:layout_width =200dip
            机器人:layout_height =match_parent
            机器人:layout_gravity =开始
            机器人:背景=@色/ abs__background_holo_light
            机器人:cacheColorHint =#00000000
            机器人:choiceMode =singleChoice
            机器人:dividerHeight =1dip/>


    < /android.support.v4.widget.DrawerLayout>
 

解决方案

这是行动起来吧标签中的抽屉的行为。你不能改变它。

查找这个答案的一些官方信息:安卓导航抽屉在标签页

和变通办法在这样的回答:获取DrawerLayout滑过动作条

我会考虑使用这个伟大的图书馆: PagerSlidingTabStrip

I have implemented ViewPager inside a DrawerLayout it is working properly but Drawer menu list view not displaying properly with the action bar it will display below the ViewPager tabs.Hope following figure will give you an idea. And i am using actionbarsherlock library.

How can i display the Drawer menu list view exactly below the action bar??

What i have tried.

Activity 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);

Activity Layout 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>

解决方案

It's the drawer's behavior with action bar tabs. You can't change it.

Find some official information in this answer: Android Navigation Drawer over the tabs

And workarounds in this answer: Getting DrawerLayout to Slide over the ActionBar

I would consider using this great library: PagerSlidingTabStrip

这篇关于Android的DrawerLayout不工作与ViewPager?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆