package com.example.development.androidmsample.fragments; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.AppBarLayout; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import com.example.development.androidmsample.R; import com.example.development.androidmsample.adapter.ViewPagerAdapter; import butterknife.Bind; /** * Created by Shekar on 6/26/15. */ public class TabLayoutFragment extends BaseFragment { @Bind(R.id.tabs) TabLayout mTabLayout; @Bind(R.id.viewpager) ViewPager mViewPager; public static TabLayoutFragment newInstance() { return new TabLayoutFragment(); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override protected int getLayout() { return R.layout.tab_layout; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setupToolbar(getString(R.string.tabLayout)); setupTabLayout(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { getActivity().getMenuInflater().inflate(R.menu.tablayout_menu, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) mToolbar.getLayoutParams(); AppBarLayout.LayoutParams tabParams = (AppBarLayout.LayoutParams) mTabLayout.getLayoutParams(); switch (item.getItemId()) { case R.id.menu_tab_pin_scroll: tabParams.setScrollFlags(0); params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS); getActivity().supportInvalidateOptionsMenu(); return true; case R.id.menu_tab_unpin_scroll: tabParams.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL| AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS); params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS); getActivity().supportInvalidateOptionsMenu(); return true; default: return super.onOptionsItemSelected(item); } } private void setupTabLayout() { mTabLayout.addTab(mTabLayout.newTab().setText("Tab 1")); mTabLayout.addTab(mTabLayout.newTab().setText("Tab 2")); mTabLayout.addTab(mTabLayout.newTab().setText("Tab 3")); mTabLayout.addTab(mTabLayout.newTab().setText("Tab 1")); mTabLayout.addTab(mTabLayout.newTab().setText("Tab 2")); mTabLayout.addTab(mTabLayout.newTab().setText("Tab 3")); mTabLayout.setTabGravity(TabLayout.GRAVITY_FILL); setupViewPager(); } private void setupViewPager() { mViewPager.setAdapter(new ViewPagerAdapter (getChildFragmentManager(), mTabLayout.getTabCount())); mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout)); mTabLayout.setOnTabSelectedListener(tabSelectedListener); } private TabLayout.OnTabSelectedListener tabSelectedListener = new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { mViewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } }; }