Search code examples
androidandroid-design-library

Android TabLayout Android Design


I'm trying to get the new TabLayout in the android design library working.

I'm following this post:

http://android-developers.blogspot.com/2015/05/android-design-support-library.html

and the documentation:

http://developer.android.com/reference/android/support/design/widget/TabLayout.html

And have come up with the following code in my activity but the tablayout isn't showing up when I run the activity.

I tried adding in the activity layout file, but it says it can't find that xml tag.

public class TabActivity extends BaseActivity {

    SectionPagerAdapter mSectionsPagerAdapter;
    ViewPager mViewPager;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_tab);

        LinearLayout v = (LinearLayout)findViewById(R.id.tabContainer);

        TabLayout tabLayout = new TabLayout(this);
        tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
        tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));
        tabLayout.addTab(tabLayout.newTab().setText("Tab 3"));

        tabLayout.setLayoutParams(new LinearLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, 50));

        v.addView(tabLayout);

        mSectionsPagerAdapter = new SectionPagerAdapter(getFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        tabLayout.setupWithViewPager(mViewPager);
        mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

    }

    public class SectionPagerAdapter extends FragmentPagerAdapter {

        private String TAG = "SectionPagerAdapter";

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

        @Override
        public Fragment getItem(int position)
        {
            return new Fragment();
        }

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

        @Override
        public CharSequence getPageTitle(int position) {
            Locale l = Locale.getDefault();
            switch (position) {
                case 0:
                    return "test";
                case 1:
                    return "test";
                case 2:
            }
            return null;
        }
    }
}

Added the following to my gradle file

 compile 'com.android.support:design:22.2.0'

Solution

  • I've just managed to setup new TabLayout, so here are the quick steps to do this (ノ◕ヮ◕)ノ*:・゚✧

    1. Add dependencies inside your build.gradle file:

      dependencies {
          compile 'com.android.support:design:23.1.1'
      }
      
    2. Add TabLayout inside your layout

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
      
          <android.support.v7.widget.Toolbar
              android:id="@+id/toolbar"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:background="?attr/colorPrimary"/>
      
          <android.support.design.widget.TabLayout
              android:id="@+id/tab_layout"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"/>
      
          <android.support.v4.view.ViewPager
              android:id="@+id/pager"
              android:layout_width="match_parent"
              android:layout_height="match_parent"/>
      
      </LinearLayout>
      
    3. Setup your Activity like this:

      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;
      
      public class TabLayoutActivity extends AppCompatActivity {
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_pull_to_refresh);
      
              Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
              TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
              ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
      
              if (toolbar != null) {
                  setSupportActionBar(toolbar);
              }
      
              viewPager.setAdapter(new SectionPagerAdapter(getSupportFragmentManager()));
              tabLayout.setupWithViewPager(viewPager);
          }
      
          public class SectionPagerAdapter extends FragmentPagerAdapter {
      
              public SectionPagerAdapter(FragmentManager fm) {
                  super(fm);
              }
      
              @Override
              public Fragment getItem(int position) {
                  switch (position) {
                      case 0:
                          return new FirstTabFragment();
                      case 1:
                      default:
                          return new SecondTabFragment();
                  }
              }
      
              @Override
              public int getCount() {
                  return 2;
              }
      
              @Override
              public CharSequence getPageTitle(int position) {
                  switch (position) {
                      case 0:
                          return "First Tab";
                      case 1:
                      default:
                          return "Second Tab";
                  }
              }
          }
      
      }