2

ページに ListViews が含まれている ViewPager があります。すべてが正常に動作し、viewPAger と ListViews が期待どおりに動作します。ページからページへのスワイプが可能で、リストビューは必要に応じて垂直方向にスクロールします。

ここで、PageTransformer を追加してページングをスムーズにし、Google ドキュメントで提供されているZoomOutPageTransformerを使用したいと考えました。

ビュー間をスワイプするときに素晴らしいアニメーションが表示されるようになりましたが、リストはスクロールできなくなりました。

コードは次のとおりです。

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    LayoutInflater inflater = LayoutInflater.from(getActivity());
    viewPager = (ViewPager) view.findViewById(R.id.bookMenuPager);
    viewPager.setPageTransformer(false, new ZoomOutPageTransformer());
    pagerAdapter = new MenuPagerAdapter();
    viewPager.setAdapter(pagerAdapter);
}


class MenuPagerAdapter extends PagerAdapter{

    @Override
    public int getCount() {

        return 3; //change this as needed
    }

    @Override
    public boolean isViewFromObject(View view, Object o) {
        return view.equals( o );
    }

    @Override
    public Object instantiateItem(ViewGroup collection, int position) {
        LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if(position == 0){
            if(!rootMenuAdded){
                viewPager.addView(rootMenucont, 0);
                rootMenuAdded = true;
            }
            return rootMenucont; 
        }else if(position == 1){
            if(!level1MenuAdded){
                viewPager.addView(level1MenuCont, 0);
                level1MenuAdded = true;
            }
            return level1MenuCont;
        }else if(position == 2){
            if(!level2MenuAdded){
                viewPager.addView(level2MenuCont, 0);
                level2MenuAdded = true;
            }
            return level2MenuCont;
        }

        //we got a problem houston
        return null;
    }
 }

およびページのレイアウト:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/level1MenuCont"
android:layout_height="match_parent"
android:layout_width="match_parent"
>

<ListView
    android:id="@+id/level1Menu"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:background="#f02bb6"
    >
</ListView>

</RelativeLayout> 

リストを期待どおりにスクロールするにはどうすればよいですか? ListView で PageTransformer が壊れてスクロールできなくなるのは何ですか? これは既知のバグですか?

助けてくれてありがとう:)

4

3 に答える 3

0

これが機能するかどうかはわかりませんが、PageDepthTransformer で同じ問題が発生します。ただし、グリッドビューを使用していますが、スクロールは機能しますが、後続のフラグメントにフォーカスがあるように見え、トップレベルのフラグメントが正しい onClick() イベントを登録しません。

これに対する私の回避策は、グローバルレイアウトリスナーをviewPagerに追加し、現在のビューを前面に表示することでした

viewPager.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    @Override
    public void onGlobalLayout() {

        View view = viewPager.getChildAt(currentFragmentPosition);

        if (view != null) {
            view.bringToFront();
        }
    }
)};

これはハッカーのように思えますが、ローテーションでうまく機能していません。しかし、うまくいけば、それはあなたを助けるかもしれません.

于 2013-10-21T01:51:24.740 に答える