0

Florent 's Material ViewPager library을 사용하고 있습니다. 각 Tab에는 각각 독립적 인 조각이 있고 그 중 일부에는 recyclerview가 있습니다.조각 모음 도구 모음 ViewPager

enter image description here

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    @BindView(R.id.materialViewPager) 
    MaterialViewPager mViewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     setTitle(""); 
     ButterKnife.bind(this); 

     final Toolbar toolbar = mViewPager.getToolbar(); 
     if (toolbar != null) { 
      setSupportActionBar(toolbar); 
     } 

     mViewPager.getViewPager().setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) { 

      @Override 
      public Fragment getItem(int position) { 
       switch (position % 4) { 

        case 0: 
         return MenuFragment.newInstance(); 

        case 1: 
         return MenuFragment.newInstance(); 

        case 2: 
         return MenuFragment.newInstance(); 

        default: 
         return MenuFragment.newInstance(); 

       } 
      } 

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

      @Override 
      public CharSequence getPageTitle(int position) { 
       switch (position % 4) { 
        case 0: 
         return "Selection"; 
        case 1: 
         return "Actualités"; 
        case 2: 
         return "Professionnel"; 
        case 3: 
         return "Divertissement"; 
       } 
       return ""; 
      } 
     }); 

     mViewPager.setMaterialViewPagerListener(new MaterialViewPager.Listener() { 
      @Override 
      public HeaderDesign getHeaderDesign(int page) { 
       switch (page) { 
        case 0: 
         return HeaderDesign.fromColorResAndUrl(
          R.color.green, 
          "http://phandroid.s3.amazonaws.com/wp-content/uploads/2014/06/android_google_moutain_google_now_1920x1080_wallpaper_Wallpaper-HD_2560x1600_www.paperhi.com_-640x400.jpg"); 
        case 1: 
         return HeaderDesign.fromColorResAndUrl(
          R.color.blue, 
          "http://www.hdiphonewallpapers.us/phone-wallpapers/540x960-1/540x960-mobile-wallpapers-hd-2218x5ox3.jpg"); 
        case 2: 
         return HeaderDesign.fromColorResAndUrl(
          R.color.cyan, 
          "http://www.droid-life.com/wp-content/uploads/2014/10/lollipop-wallpapers10.jpg"); 
        case 3: 
         return HeaderDesign.fromColorResAndUrl(
          R.color.red, 
          "http://www.tothemobile.com/wp-content/uploads/2014/07/original.jpg"); 
       } 

       //execute others actions if needed (ex : modify your header logo) 

       return null; 
      } 
     }); 

     mViewPager.getViewPager().setOffscreenPageLimit(mViewPager.getViewPager().getAdapter().getCount()); 
     mViewPager.getPagerTitleStrip().setViewPager(mViewPager.getViewPager()); 

     final View logo = findViewById(R.id.logo_white); 
     if (logo != null) { 
      logo.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        mViewPager.notifyHeaderChanged(); 
        Toast.makeText(getApplicationContext(), "Yes, the title is clickable", Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 
    } 

} 

activity_main.xml

:

이제 우려 스크린 아래에 도시 된 바와 같이, 헤더/재료 viewpager 겹치는 내 조각이며
<?xml version="1.0" encoding="utf-8"?> 
<com.github.florent37.materialviewpager.MaterialViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/materialViewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:viewpager_logo="@layout/header_logo" 
     app:viewpager_pagerTitleStrip="@layout/material_view_pager_pagertitlestrip_newstand" 
     app:viewpager_logoMarginTop="100dp" 
     app:viewpager_color="@color/colorPrimary" 
     app:viewpager_headerHeight="200dp" 
     app:viewpager_headerAlpha="1.0" 
     app:viewpager_imageHeaderDarkLayerAlpha="0.2" 
     app:viewpager_hideLogoWithFade="false" 
     app:viewpager_hideToolbarAndTitle="true" 
     app:viewpager_enableToolbarElevation="true" 
     app:viewpager_parallaxHeaderFactor="1.5" 
     app:viewpager_headerAdditionalHeight="20dp" 
     app:viewpager_displayToolbarWhenSwipe="true" 
     app:viewpager_transparentToolbar="false" 
     app:viewpager_animatedHeaderImage="true" 
     /> 

MenuFragment.java

public class MenuFragment extends Fragment { 

    .... 

    public static MenuFragment newInstance() { 
     return new MenuFragment(); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_one, container, false); 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     ... 

     mRecyclerView = (RecyclerView)view.findViewById(R.id.recyclerView); 

     mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
     mRecyclerView.setItemAnimator(new DefaultItemAnimator()); 

     .... 
    } 

} 

당신의 LinearLayout에 fragment_one.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 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" /> 

</LinearLayout> 
+0

viewPager의 xml에서 hideToolbar 및 title을 true로 설정하면 숨겨진 툴바가 표시 될 수 있습니다. 또한 툴바가 디버깅으로 null인지 확인하십시오. –

답변

0

추가 속성 app:layout_behavior="@string/appbar_scrolling_view_behavior"MaterialViewPager로 상대적으로 스크롤을 확인합니다.

희망이 있습니다.