2017-09-18 25 views
0

こんにちは、私はフラグメントにビューページを入れようとしていましたが、私は多くのチュートリアルに従い、無駄になりました。私はここに私のコードがある別のフラグメントレイアウトの途中でviewpagerを作成しようとしています:ViewPagerはフラグメントのレイアウト内には表示されません

アダプタ:

@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; 
} 
:トランスクラスを含むViewPagerが含まれてい

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; 
} 
} 

断片

トランスフォーマー:

 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 

そして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; 
} 

viewpagerを格納するためのフラグメントのためのXMLレイアウト:

<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> 

問題は、私はGetChildFragmentを使用してのさまざまなチュートリアルを試して、それはまだないです私はビルドアダプターを作成しようとしましたが、結果は表示されませんでした。 アドバイスをありがとうございます。

答えて

1
CardStackFragment.newInstance(position) 

このstatement.Itが再び繰り返している

EDIT削除:

問題はこのline.Commentでこれなステートメントであり、あなたのviewpagerがしたら

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

を動作するはずですがあなたの全体のコードを見て、私はこの文章が間違っていて、画面の外に見えることが分かった。これがあなたを助けることを願っています。

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

大丈夫ですが、私はそれを「新しいCardStackFragment(); return」に置き換えました。まだ出力にチェンジャーはありません。空白のようです –

+0

あなたは正しいです!この場合、どうすれば私の変換を追加できますか? –

+0

CardStackTransformer()クラスにどのような変換を追加しようとしているのでしょうか?計算が間違っていると思います。 – Anonymous

関連する問題