Search code examples
androidandroid-tabs

Change Android Action Tab Style


I have two Tabs with ViewPager with two Fragments - FirstFragment and SecondFragment. I want to change color of Tabs and color of TabIndicator. For creating Tabs I'm using this code:

public class MainActivity extends FragmentActivity implements TabListener {

    ViewPager viewPager;
    ActionBar actionBar;

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activity_main);

        viewPager = (ViewPager) findViewById(R.id.pager);
        viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int i) {
                actionBar.setSelectedNavigationItem(i);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {

            }
        });

        actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        actionBar.addTab(actionBar.newTab().setText("FIRST").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("SECOND").setTabListener(this));
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {

    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {

    }

    private class MyAdapter extends FragmentPagerAdapter {

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

        @Override
        public Fragment getItem(int pos) {

            Fragment fragment = null;

            switch (pos) {
            case 0:
                fragment = new FirstFragment();
                break;

            case 1:
                fragment = new SecondFragment();
                break;
            }

            return fragment;
        }

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

}

I searched on forums and someone recommended to use this Style Generator I create my own style, download it and put in my res folder, but nothing happen. Probably I'm missing something. How can I use my style...?


Solution

  • Apply the custom theme to your application.

    Thanks,