私のアプリケーションは FragmentStatePagerAdapter で Android の ViewPager を使用しており、Android 4.x 以降のみをサポートする必要があります。ViewPager に v13 サポート ライブラリを使用しているため、SupportFragments を処理する必要はありませんAndroid.app.Fragment
。すべてが期待どおりに機能しますが、現在PageTransformer
ViewPager に a を追加しようとしていて、問題が発生しています。
ViewPager.setPageTransformer(bool, PageTransformer)
はメソッドとして認識さPageTransformer
れず、クラスとしても認識されません (インポートの多くの組み合わせを試しましたが、役に立ちませんでした)。v4 サポート ライブラリを使用するViewPager.setPageTransformer
のも方法ですが、サポート ライブラリ v4 を使用する場合は、サポートSupportFragments
している Android のバージョンのために不要だと思っていた を使用する必要があります。
質問: v13 ライブラリはViewPager
PageTransformers をサポートしていますか? SupportFragments よりもネイティブ Fragments を使用する利点はありますか、それともサポート ライブラリ v4 を使用する必要がありますか?
編集:私は自分の問題を示すファイルのインポートと関連コードを追加しています
import java.lang.reflect.Field;
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v13.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
クラス内 (何も拡張しません) で、このメソッドでページ トランスフォーマーを設定しようとしています。
public View createView(LayoutInflater inflater, ViewGroup container) {
// Inflate the layout containing a title and body text.
ViewGroup rootView = (ViewGroup) inflater
.inflate(R.layout.carousel_fragment, container, false);
mContainer = (PagerContainer) rootView.findViewById(R.id.pager_container);
//PagerContainer makes it easy to display more than one page from the ViewPager
//on screen at once
mPager = mContainer.getViewPager();
mAdapter = new MyPagerAdapter(MainActivity.getActivity().getFragmentManager());
mPager.setAdapter(mAdapter);
mPager.setOffscreenPageLimit(2);
mPager.setPageMargin(10);
mPager.setClipChildren(false);
mPager.setCurrentItem(mPager.getAdapter().getCount()/2, false);
mPager.setPageTransformer(false, new PageTransformer(){
@Override
public void transformPage(View page, float position) {
// do something that isn't default behavior
}
});
Field mScroller;
try {
mScroller = ViewPager.class.getDeclaredField("mScroller");
mScroller.setAccessible(true);
CustomScroller scroller = new CustomScroller(MainActivity.getContext());
mScroller.set(mPager, scroller);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return rootView;
}
私が得ている特定のエラーはcannot find symbol: PageTransformer
、setPageTransformer
メソッドの同様のエラーです。私のプロジェクトにはandroid-support-v13.jar
v4.jar がありますが、両方を含めたときに DEX エラーが発生したため、v4.jar はありません。
私はおそらく何かばかげたことをしているのですが、まだ理解できません。私はあなたが与えることができる任意の助けに感謝します.