9

ile çalışmaz. Bir ViewCager kullanarak, RecyclerView'ı tutan ve yöneten parçalara sahip basit bir gezinme gezinme uygulamak istiyorum.ViewPager kaydırması, RecyclerView

Fragmanlar oluşturuldu ve setCurrentItem() kullanılarak değiştirilebilir, ancak sayfaları değiştirmek için sola veya sağa kaydılamazsınız. ViewPager herhangi bir kaydırma hareketini görmezden geliyor gibi görünüyor.

Benim Etkinlik düzeni:
<FrameLayout 
    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.v4.view.ViewPager 
     android:id="@+id/viewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="?attr/actionBarSize"/> 

    <android.support.v7.widget.Toolbar 
        ...     /> 

</FrameLayout> 

ben şöyle benim onCreate() bir FragmentPagerAdapter kullanarak ViewPager doldurmak:

:

viewPager = (ViewPager) findViewById(R.id.viewPager); 
viewPager.addOnPageChangeListener(this); 
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { 
     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
        return new Dummy2Fragment(); 

       case 1: 
        return new Dummy2Fragment(); 

       default: 
        return null; 
      } 
     } 

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

     @Override 
     public CharSequence getPageTitle(int position) { 
      return "Dataset " + (position + 1); 
     } 
    }); 

parçası düzeni RecyclerView sarar basit FrameLayout olduğunu

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/background_material_light"/> 

</FrameLayout> 

Uyumluluk Yeterince sorum net sormadı düşünüyorum

recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView); 
recyclerView.setHasFixedSize(true); 
recyclerView.setAdapter(adapter); 
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 6, LinearLayoutManager.VERTICAL, false)); 

Düzenleme 1.

: ter ve düzen yöneticisi parçası en onCreateView ayarlanır.
Çalışan bir "TablTalker" ile çalışan bir Fragayout'um var. Bu, Fragment'lerin düzgün bir şekilde oluşturulduğu ve sekme düzeninin her öğe için tıklanabilir bir sekme gösterdiği anlamına gelir. Bu ViewPager'daki her Fragman, GridLayoutManager ile RecyclerView görüntüler.

Ancak, ViewPager herhangi bir kaydırma hareketi almıyor gibi görünüyor, Geçerli seçili konumu TabLayout aracılığıyla değiştirebilir, ancak örneğin soldan sağa kaydırarak değil.
RecyclerView, vertical olarak ayarlanan düzen yönünden bağımsız olarak tüm kaydırma olaylarını tüketir gibi görünüyor.

Herhangi bir fikrin var mı?

+0

https://androidbeasts.wordpress.com/2015/08/11/tabs-with-swipe-views/#more-79 – Aakash

cevap

2

Bu

<?xml version="1.0" encoding="utf-8"?> 

<android.support.design.widget.CoordinatorLayout  
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 

    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="wrap_content" 

     /> 

</android.support.design.widget.AppBarLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 


</android.support.design.widget.CoordinatorLayout> 

gibi Viewpager ile tablayout kullanabilirsiniz Ayrıca

tabLayout = (TabLayout) rv.findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 

set ve Yöntem setupWithViewPager MatesListFragment yılında

private void setupViewPager(ViewPager viewPager) { 
     adapter = new Adapter(getChildFragmentManager()); 
     adapter.addFragment(new MatesListFragment(), "Mates"); 
     adapter.addFragment(new FavoursListFragment(), "Favours"); 
     adapter.addFragment(new FavemeListFragment(), "FavMe"); 
     viewPager.setAdapter(adapter); 
} 


class Adapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragments = new ArrayList(); 
    private final List<String> mFragmentTitles = new ArrayList(); 

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

    public void addFragment(Fragment fragment, String title) { 
     mFragments.add(fragment); 
     mFragmentTitles.add(title); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragments.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragments.size(); 
    } 

    public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 
    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitles.get(position); 
    } 
} 

, FavoursListFragment vb Eğer RecyclerView var gibidir düzen

+4

Cevabınız için teşekkür ederiz. Sanırım sorumu yanlış anladınız, ViewPagers uygulamasının neden işe yaramadığını merak ediyordum. Ayrıca sekme düzenini içeren bu etkinliğin bir sürümüne sahibim, ancak kaydırma hareketleri de yok sayılıyor. – tobs

+1

Benimle çalışma kodum var. Bunu deneyin. – Dharmaraj