Search code examples
javaandroidandroid-fragmentstabsandroid-viewpager

Add an Icon to tabs inside viewPager


I am trying to add icons to my 3 tabs inside ViewPager. I could not find any solutions for that. If any other solutions are available I am ready to change completly my code Thanks a lot for your answers. Hello everybody, I am trying to add icons to my 3 tabs inside ViewPager. I could not find any solutions for that. If any other solutions are available I am ready to change completly my code Thanks a lot for your answers.

    package com.example.septime.locumatix.Activities;


import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import com.example.septime.locumatix.Fragments.GrosBonnetAnalyseFragment;
import com.example.septime.locumatix.Fragments.GrosBonnetExercicesFragment;
import com.example.septime.locumatix.Fragments.GrosBonnetPlusLoinFragment;

import com.example.septime.locumatix.R;

import java.util.ArrayList;
import java.util.List;

public class GrosBonnetActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grosbonnet);

        Toolbar toolbar = findViewById(R.id.mytoolbar);

        ViewPager viewPager = findViewById(R.id.viewpager);
        setViewPager(viewPager);

        TabLayout tabLayout = findViewById(R.id.mytabs);
        tabLayout.setupWithViewPager(viewPager);
    }
    private void setViewPager(ViewPager viewPager) {
        GrosBonnetActivity.ViewPagerAdapter adapter = new GrosBonnetActivity.ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new GrosBonnetAnalyseFragment(), "Analyse");
        adapter.addFragment(new GrosBonnetExercicesFragment(), "Exercices");
        adapter.addFragment(new GrosBonnetPlusLoinFragment(), "Plus loin");
        viewPager.setAdapter(adapter);
    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
}

Solution

  • It is already described here. All you need is method setCustomView.