Find file
AndroidTabLayoutWithViewPager/app/src/main/java/com/example/cola/tablayoutwithviewpager/MainActivity.java
712c128 on 26 Jun 2015 ColaCheng upload code
package com.example.cola.tablayoutwithviewpager; import android.content.Context; import android.graphics.drawable.Drawable; 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.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.Spannable; import android.text.SpannableString; import android.text.style.ImageSpan; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivityextends AppCompatActivity { TabLayout tabLayout; ViewPager viewPager; PagerAdapter adapter; @Override protected void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tabLayout = (TabLayout) findViewById(R.id.tab_layout); viewPager = (ViewPager) findViewById(R.id.pager); if (viewPager != null) { setupViewPager(viewPager); } } private void setupViewPager(ViewPagerviewPager) { adapter = new PagerAdapter(getSupportFragmentManager(),this); adapter.addFragment(newContentFragment().newInstance("Page1"),"Tab 1"); adapter.addFragment(newContentFragment().newInstance("Page2"),"Tab 2"); adapter.addFragment(newContentFragment().newInstance("Page3"),"Tab 3"); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); for (int i= 0; i < tabLayout.getTabCount(); i++) { TabLayout.Tab tab= tabLayout.getTabAt(i); tab.setCustomView(adapter.getTabView(i)); } viewPager.setOnPageChangeListener(newViewPager.OnPageChangeListener() { // This method will be invoked when a new page becomes selected. @Override public void onPageSelected(intposition) { Toast.makeText(MainActivity.this, "Selected page position:" + position, Toast.LENGTH_SHORT).show(); } // This method will be invoked when the current page is scrolled @Override public void onPageScrolled(intposition, float positionOffset,int positionOffsetPixels) { // Code goes here } // Called when the scroll state changes: // SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING @Override public void onPageScrollStateChanged(intstate) { // Code goes here } }); } public class PagerAdapterextends FragmentPagerAdapter { private final List<Fragment> myFragments= new ArrayList<>(); private final List<String> myFragmentTitles= new ArrayList<>(); private Context context; private int[] imageResId = { R.drawable.facebook_logo_32, R.drawable.instagram_logo_32, R.drawable.linkedin_logo_32 }; private int[] customImageResId = { R.drawable.facebook, R.drawable.instagram, R.drawable.linkedin }; public PagerAdapter(FragmentManager fm, Context context) { super(fm); this.context= context; } public void addFragment(Fragmentfragment, String title) { myFragments.add(fragment); myFragmentTitles.add(title); } @Override public Fragment getItem(intposition) { return myFragments.get(position); } @Override public int getCount() { return myFragments.size(); } public View getTabView(intposition) { // Given you have a custom layout in `res/layout/custom_tab_item.xml` with a TextView and ImageView View v = LayoutInflater.from(context).inflate(R.layout.custom_tab_item,null); TextView tv = (TextView) v.findViewById(R.id.tab_item_txt); tv.setText(myFragmentTitles.get(position)); ImageView img = (ImageView) v.findViewById(R.id.tab_item_view); img.setImageResource(customImageResId[position]); return v; } @Override public CharSequence getPageTitle(intposition) { //text only, use this // return myFragmentTitles.get(position); //add Tab with icon and text, use this Drawable image = context.getResources().getDrawable(imageResId[position]); image.setBounds(0,0, image.getIntrinsicWidth(), image.getIntrinsicHeight()); SpannableString sb = new SpannableString("" + myFragmentTitles.get(position)); ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM); sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return sb; } } }