Recyclerview Within Viewpager Not Working
so I'm working on an app that utilizes a fixed 2 tabs within a view pager. I have a RecyclerView inside of a ViewPager but the RecyclerView is not responding to horizontal swipes.
Solution 1:
For that you need to off viewpager swaping both are not working at same time.
Too disable swip of viewpager use below code
publicclassMyViewPagerextendsViewPager {
privateboolean enabled;
publicCustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true; // default swipe enable is true
}
@OverridepublicbooleanonTouchEvent(MotionEvent event) {
if (this.enabled) {
returnsuper.onTouchEvent(event);
}
returnfalse;
}
@OverridepublicbooleanonInterceptTouchEvent(MotionEvent event) {
if (this.enabled) {
returnsuper.onInterceptTouchEvent(event);
}
returnfalse;
}
// true - enable swipe // false - disable swipepublicvoidsetPagingEnabled(boolean enabled) {
this.enabled = enabled;
}
}
and use below code while using viewpager in .xml file
<package.MyViewPager
android:id="@+id/viewPager"
android:layout_height="match_parent"
android:layout_width="match_parent" />
Hope these answer helps you.
These same approach you can use use it for recyclerview also if you required in future.
Hope these help you.
Solution 2:
You can use fragment to show RecycleView. For example: You will create a class Adapter to manage.
publicclassHomeFragmentAdapterextendsFragmentPagerAdapter {
privatefinal ArrayList<Fragment> mFragment = newArrayList<>();
privatefinal ArrayList<String> mFragmentTitle = newArrayList<>();
publicHomeFragmentAdapter(FragmentManager fragmentManager){
super(fragmentManager);
}
publicvoidaddFragment(Fragment fragment, String title){
mFragment.add(fragment);
mFragmentTitle.add(title);
}
@Overridepublic Fragment getItem(int position) {
return mFragment.get(position);
}
@OverridepublicintgetCount() {
return mFragment.size();
}
@Overridepublic CharSequence getPageTitle(int position) {
return mFragmentTitle.get(position);
}
}
And after that you will add more fragment which include any RecycleView you need.
publicclassHomeFragmentextendsFragment {
publicstatic TabLayout tabLayout;
publicstatic ViewPager viewPager;
Menu mMenu;
publicHomeFragment(){
}
@OverridepublicvoidonCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
Viewview= inflater.inflate(R.layout.fragment_layout_home, null);
tabLayout = (TabLayout) view.findViewById(R.id.tab_home);
viewPager = (ViewPager) view.findViewById(R.id.viewpager_home);
if(viewPager != null){
setupViewPager(viewPager);
}
tabLayout.setTabMode(TabLayout.MODE_FIXED);
tabLayout.setupWithViewPager(viewPager);
return view;
}
privatevoidsetupViewPager(ViewPager viewPager){
HomeFragmentAdapteradapter=newHomeFragmentAdapter(getChildFragmentManager());
adapter.addFragment(newExpenseFragment(), "Expense");
adapter.addFragment(newIncomeFragment(), "Income");
viewPager.setAdapter(adapter);
}
T hope it could been help you.
Post a Comment for "Recyclerview Within Viewpager Not Working"