I use the tabs from the material design, how to prevent the tabs from scrolling, so that they do not rotate from one to second while moving the finger on the screen, but only when choosing go to the tab

UPD:

Java swears on a method

viewPager.setPagingEnabled(false); 

xml:

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="110dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="55dp" app:tabMode="fixed" app:tabGravity="fill"/> </android.support.design.widget.AppBarLayout> <com.example.harrix.myapplication.CustomViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="110dp"/> </android.support.design.widget.CoordinatorLayout> 

MainActivity:

 public class MainActivity extends AppCompatActivity { private int[] tabIcons = { R.drawable.ic_home_white_24dp, R.drawable.ic_3d_rotation_white_24dp, R.drawable.ic_location_on_white_24dp }; private Toolbar toolbar; private TabLayout tabLayout; private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); viewPager = (ViewPager) findViewById(R.id.viewpager); setupViewPager(viewPager); tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager); setupTabIcons(); } private void setupTabIcons() { tabLayout.getTabAt(0).setIcon(tabIcons[0]); tabLayout.getTabAt(1).setIcon(tabIcons[1]); tabLayout.getTabAt(2).setIcon(tabIcons[2]); } private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(new OneFragment(), "ƏSAS"); adapter.addFragment(new TwoFragment(), "VIRTUAL TUR"); adapter.addFragment(new ThreeFragment(), "ÜNVANIMIZ"); viewPager.setAdapter(adapter); } class ViewPagerAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragmentList = new ArrayList<>(); private final List<String> mFragmentTitleList = new ArrayList<>(); public ViewPagerAdapter(FragmentManager manager) { super(manager); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } public void addFragment(Fragment fragment, String title) { mFragmentList.add(fragment); mFragmentTitleList.add(title); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); } } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: return super.onOptionsItemSelected(item); } } } 

Pager:

 public class CustomViewPager extends android.support.v4.view.ViewPager{ private boolean enabled; public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); this.enabled = true; } @Override public boolean onTouchEvent(MotionEvent event) { return enabled ? super.onTouchEvent(event) : false; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { return enabled ? super.onInterceptTouchEvent(event) : false; } public void setPagingEnabled(boolean enabled) { this.enabled = enabled; } public boolean isPagingEnabled() { return enabled; } } 

    1 answer 1

     public class CustomViewPager extends android.support.v4.view.ViewPager{ private boolean enabled; public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); this.enabled = true; } @Override public boolean onTouchEvent(MotionEvent event) { return enabled ? super.onTouchEvent(event) : false; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { return enabled ? super.onInterceptTouchEvent(event) : false; } public void setPagingEnabled(boolean enabled) { this.enabled = enabled; } public boolean isPagingEnabled() { return enabled; } } 

    Markup replace

     <android.support.v4.view.ViewPager ... /> 

    on

     <имя.пакета.CustomViewPager ... /> 

    Use:

     mViewPager.setPagingEnabled(false); 

    A source

    • Listen to discover the new class there to inherit this class and then set setPagign in your class? &&& - elik
    • Can you explain more clearly? - elik
    • one
      @elik, drag this class into the project, then use setPagingEnabled(false) in code, you also need to change the pager in the markup, update the answer - katso
    • Thanks, I'll be there, and thanks for that answer, he gave me the answer to several questions about the implementation of classes. - elik
    • not how it is impossible in what a problem ???? mViewPager.setPagingEnabled (false); - elik