2017-09-18 3 views
0

Salut, j'ai essayé d'entrer dans un viewpager dans un fragment, cependant, j'ai suivi de nombreux tutoriels et de venir en vain. Je suis en train de créer un viewpager au milieu d'une autre mise en page de fragment voici mes codes:ViewPager n'apparaissant pas dans une mise en page fragmentée

Adaptateur:

public class CardStackAdapter extends FragmentPagerAdapter { 

private Context context; 

public CardStackAdapter(Context context, FragmentManager fm) { 
    super(fm); 
    this.context =context; 
} 

@Override 
public Fragment getItem(int position) 
{ 
    return CardStackFragment.newInstance(position); 
} 
@Override 
public int getCount() { 
    return 5; 
} 
} 

Fragment qui contient le ViewPager y compris la classe du transformateur:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_social_people, 
      container, false); 
    // stack cards 
    ViewPager mPager; 
    PagerAdapter mAdapter; 

    mPager = (ViewPager)view.findViewById(R.id.stackcardvp); 
    mAdapter = new CardStackAdapter(getActivity(),getChildFragmentManager()); 

    mPager.setPageTransformer(true,new CardStackTransformer()); 

    mPager.setOffscreenPageLimit(2); 

    mPager.setAdapter(mAdapter); 
    // mPager.setAdapter(buildAdapter()); 

    return view; 
} 

Transformateur:

 private class CardStackTransformer implements ViewPager.PageTransformer{ 


    @Override 
    public void transformPage(View page, float position) { 
     if(position >= 0){ 


      page.setScaleX(0.0f-0.02f * position); 
      page.setScaleY(0.0f); 


      page.setTranslationX(-page.getWidth()+position); 
      page.setTranslationY(30 + position); 
     } 

    } 
}// private class 

et le fragment pour la viewpager:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_card_stack, 
      container, false); 

    return view; 
} 

public static CardStackFragment newInstance(int selectedIdForIndex) { 
    CardStackFragment fragment = new CardStackFragment(); 

    Bundle args = new Bundle(); 
    args.putInt(ARG_LAYOUT_ID, selectedIdForIndex); 
    fragment.setArguments(args); 

    return fragment; 
} 

mise en page XML pour le fragment de contenir la viewpager:

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:padding="30dp"> 

     <FrameLayout 
      android:id="@+id/fl" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      > 

     <android.support.v4.view.ViewPager 
      android:id="@+id/stackcardvp" 
      android:layout_width="match_parent" 
      android:layout_height="320dp" 
      android:layout_centerInParent="true" 
      android:visibility="visible" /> 

     </FrameLayout> 

    </LinearLayout> 

Le problème est que j'essaie les différents tutoriels d'utilisation GetChildFragment cela ne fonctionne toujours pas Apparemment, j'ai même essayé de créer un adaptateur de build mais sans résultat. Merci d'avance pour le conseil.

Répondre

1
CardStackFragment.newInstance(position) 

Supprimer cette statement.It est récurrente à nouveau

EDIT:

Le problème est avec ce line.Comment ce statment et votre viewpager devrait fonctionner

mPager.setPageTransformer(true,new CardStackTransformer()); 

À En voyant votre code entier, j'ai découvert que cette affirmation ne va pas et en mettant la vue à l'extérieur de l'écran. J'espère que cela vous aide.

page.setScaleX(0.0f-0.02f * position); 
+0

okay j'ai fait cela et je l'ai remplacé par 'return new CardStackFragment();' mais toujours pas de changements à la sortie. semble être vide –

+0

vous avez raison! mais si c'est le cas, comment puis-je ajouter dans mes transformations? –

+0

comme ce que les transformations que vous essayez d'ajouter dans cette classe CardStackTransformer()? Que les calculs sont mauvais Je suppose que – Anonymous