Tabs below action bar

后端 未结 2 2023
醉酒成梦
醉酒成梦 2021-01-03 17:06

I\'m developing for Android 4.3 and been having a problem with my code that I can\'t seem to figure out. I\'ve been looking for answers for a while and all I could find was

2条回答
  •  盖世英雄少女心
    2021-01-03 17:47

    private ViewPager mPager;
    private PagerAdapter mPagerAdapter;
    private static final int NUM_PAGES = 3;
    

    in onCreate()

    final ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    
        mPager = (ViewPager) findViewById(R.id.pager);
        mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(mPagerAdapter);
        mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }
        });
    
        ActionBar.TabListener tabListener = new ActionBar.TabListener() {
    
            @Override
            public void onTabReselected(Tab tab,
                    android.app.FragmentTransaction ft) {
    
            }
    
            @Override
            public void onTabSelected(Tab tab,
                    android.app.FragmentTransaction ft) {
                mPager.setCurrentItem(tab.getPosition());
            }
    
            @Override
            public void onTabUnselected(Tab tab,
                    android.app.FragmentTransaction ft) {
            }
    
        };
    
        for (int i = 0; i < mPagerAdapter.getCount(); i++) {
            actionBar.addTab(actionBar
                    .newTab()
                    .setText(mPagerAdapter.getPageTitle(i))
                    .setIcon(
                            ((ScreenSlidePagerAdapter) mPagerAdapter)
                                    .getPageIcon(i))
                    .setTabListener(tabListener));
        }
    
    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
        public ScreenSlidePagerAdapter(FragmentManager fm) {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int position) {
            switch (position) {
            case 0:
                return Fragment.instantiate(MainActivity.this,
                        Fragment_sports.class.getName());
            case 1:
                return Fragment.instantiate(MainActivity.this,
                        Fragment_casino.class.getName());
            case 2:
                return Fragment.instantiate(MainActivity.this,
                        Fragment_live_betting.class.getName());
            default:
                break;
            }
            return null;
        }
    
        @Override
        public int getCount() {
            return NUM_PAGES;
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            String tabLabel = null;
            switch (position) {
            case 0:
                tabLabel = " Sports";
                break;
            case 1:
                tabLabel = "Casino";
                break;
            case 2:
                tabLabel = "Live Betting";
                break;
            }
    
            return tabLabel;
        }
    
        public int getPageIcon(int position) {
            int id = 0;
            switch (position) {
            case 0:
                id = R.drawable.icon_all_sports_d;
                break;
            case 1:
                id = R.drawable.icon_favourites_d;
                break;
            case 2:
                id = R.drawable.icon_live_d;
                break;
            default:
                break;
            }
            return id;
    
        }
    }
    

    and your main_activity.xml:

    
    
        
    
    
    

    ADD:

    You should replace this line:

    actionBar.setDisplayHomeAsUpEnabled(true);
    

    to this:

    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(false);
    

提交回复
热议问题