【问题标题】:Android action bar tabs inside navigation drawer fragment导航抽屉片段内的Android操作栏选项卡
【发布时间】:2014-08-22 05:47:56
【问题描述】:

我有带有片段的导航抽屉。是否有任何可能的方法可以在一个片段中实现操作栏选项卡,同时拥有导航抽屉,就像在 Google I/O 2014 应用程序中一样?:

http://cdn.slashgear.com/wp-content/uploads/2014/06/google-io-2014-app-4.png

我的意思是我需要它至少看起来像操作栏标签(带有滑动手势)。因为默认 viewPagerTabStrip 真的很烂。

在此先感谢 ;)

【问题讨论】:

    标签: android android-actionbar android-viewpager navigation-drawer


    【解决方案1】:

    是的..我在我的应用程序中实现了相同的功能。 我也用过ViewPager

    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:background="@android:color/white" android:layout_height="match_parent"> </android.support.v4.view.ViewPager>

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_fragment);
    
        viewPager = (ViewPager) findViewById(R.id.pager);
        viewPager.setAdapter(new MyAdapter(getSupportFragmentManager(), ActionBarActivity.this));
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i2) {
            }
            @Override
            public void onPageSelected(int i) {
                actionBar.setSelectedNavigationItem(i);
            }
            @Override
            public void onPageScrollStateChanged(int i) {
            }
        });
    
        actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setDisplayShowHomeEnabled(true);
    
        ActionBar.Tab tab1 = actionBar.newTab();
        tab1.setText("Client");
        tab1.setTabListener(this);
    
        ActionBar.Tab tab2 = actionBar.newTab();
        tab2.setText("Supplier");
        tab2.setTabListener(this);
    
        ActionBar.Tab tab3 = actionBar.newTab();
        tab3.setText("Driver");
        tab3.setTabListener(this);
    
        ActionBar.Tab tab4 = actionBar.newTab();
        tab4.setText("Owner");
        tab4.setTabListener(this);
    
        actionBar.addTab(tab1);
        actionBar.addTab(tab2);
        actionBar.addTab(tab3);
        actionBar.addTab(tab4);
    
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        viewPager.setCurrentItem(tab.getPosition());
    }
    
    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    
    }
    
    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }
    
    }
    

    也可以使用片段适配器

        class MyAdapter extends FragmentPagerAdapter{
    
        Context context;
        public MyAdapter(FragmentManager fragmentManager, Context context){
            super(fragmentManager);
            this.context = context;
        }
    
        @Override
        public Fragment getItem(int i) {
    
            Fragment fragment = null;
            if(i == 0){
                fragment = new FragmentClass1(context);
            }else if(i == 1) {
                fragment = new FragmentClass2(context);
            }else if(i == 2){
                fragment = new FragmentClass3(context);
            }else {
                fragment = new FragmentClass4(context);
            }
            return fragment;
        }
    
        @Override
        public int getCount() {
            return 4;
        }
    }
    

    对于抽屉,使用这个

    &lt;android.support.v4.widget.DrawerLayout&gt; //你的代码 &lt;/android.support.v4.widget.DrawerLayout&gt;

    【讨论】:

    • 其实有几个问题: 1. 导航抽屉在标签下方,应该只在操作栏下方。 2. 通过抽屉式导航更改片段时,选项卡不会消失。 3. 返回 viewPager 片段时,选项卡重复。你有解决这些问题的办法吗?
    • 我没有遇到这样的问题。我已经编辑了我的答案。检查我新添加的功能。
    • @enVGuy :您是否设法解决了上述问题?我也面临同样的问题。
    • 是的,但我没有使用标准标签。谷歌有这方面的代码。我不在家,所以无法为您搜索链接,但您可以查看 Google I/O 2014 源代码。他们在那里使用了这些“自定义”标签。在 yoytube devbytes 中也有一个视频。如果找不到,请给我留言,我稍后会搜索该链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    相关资源
    最近更新 更多