首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SlidingMenu与ViewPager冲突

SlidingMenu与ViewPager冲突
EN

Stack Overflow用户
提问于 2015-04-21 06:57:43
回答 1查看 238关注 0票数 2

我正试图让SlidingMenuViewPager一起工作,并且我遵循了库中的示例。我的活动来源如下。

问题是,尽管SlidingMenuViewPager一起工作很好,但是在第一次打开SlidingMenu之后,ViewPager开始表现得很奇怪。

奇怪的是,当你向右和向左滑动时,UI会卡在一个页面上,不会改变,我的意思是,就像我在记录器中看到的那样,只有UI才会改变页面。

我已经广泛搜索了网络,虽然在实现SlidingMenuViewPager的同时也有很多类似的问题,但我的问题似乎是独一无二的。

任何帮助都是非常感谢的。

代码语言:javascript
复制
public class MainTabActivity extends SlidingFragmentActivity {
    private static final String TAG = "MainTabActivity";

    @InjectView(R.id.tabHostPager)
    ViewPager tabHostPager;
    @InjectView(R.id.tabs)
    PagerSlidingTabStrip tabStrip;

    FragmentPagerAdapter pagerAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_tab);
        setBehindContentView(R.layout.sliding_menu_layout);
        loadSlidingMenu();
        ButterKnife.inject(this);

        pagerAdapter = new MainTabAdapter(getSupportFragmentManager());
        tabHostPager.setAdapter(pagerAdapter);

        //Assign the TabStrip it's ViewPager
        tabStrip.setViewPager(tabHostPager);

        tabStrip.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                switch (position) {
                    case 0:
                        getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
                        break;
                    default:
                        getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        tabHostPager.setCurrentItem(0);
    }

    private void loadSlidingMenu() {
        // configure the SlidingMenu
        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = size.x;
        getSlidingMenu().setMode(SlidingMenu.LEFT);
        getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        getSlidingMenu().setShadowWidth(100);
        getSlidingMenu().setFadeDegree(0.35f);
        getSlidingMenu().setBehindWidth(width / 100 * 90);
    }

    private class MainTabAdapter extends FragmentPagerAdapter {

        public MainTabAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return 4;
        }

        @Override
        public Fragment getItem(int position) {
            return Friends.newInstance();
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return "Home";
        }

    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-21 07:49:10

最后我设法解决了这个问题。它与来自manageLayers类的SlidingMenu方法有关。注释掉方法的主体就是它所需要的一切:

代码语言:javascript
复制
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    public void manageLayers(float percentOpen) {
        /*if (Build.VERSION.SDK_INT < 11) return;

        boolean layer = percentOpen > 0.0f && percentOpen < 1.0f;
        final int layerType = layer ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE;

        if (layerType != getContent().getLayerType()) {
            getHandler().post(new Runnable() {
                public void run() {
                    Log.v(TAG, "changing layerType. hardware? " + (layerType == View.LAYER_TYPE_HARDWARE));
                    getContent().setLayerType(layerType, null);
                    getMenu().setLayerType(layerType, null);
                    if (getSecondaryMenu() != null) {
                        getSecondaryMenu().setLayerType(layerType, null);
                    }
                }
            });
        }*/
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29765035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档