我的目標是在我的應用中實現一個指南/如何使用應用活動,用戶可以在預定義的一組視圖之間切換。所以,我決定使用ViewPager。ViewPager以意想不到的方式運行
這是我在GuideActivity
是怎麼做:
mPager = (ViewPager) findViewById(R.id.pager);
mAdapter = new GuideAdapter(getBaseContext());
mPager.setAdapter(mAdapter);
這是我實現的PagerAdapter
:
class GuideAdapter extends PagerAdapter {
private Context context;
protected static final int[] SLIDES = new int[] {
R.drawable.page1, R.drawable.page2, R.drawable.page3 };
public GuideAdapter(Context context) {
this.context = context;
}
@Override
public View instantiateItem(ViewGroup container, int position) {
ImageView image = new ImageView(container.getContext());
image.setImageResource(SLIDES[position]);
container.addView(image, LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
return image;
}
@Override
public void destroyItem(ViewGroup collection, int position, Object view) {
((ViewPager) collection).removeView((View) view);
}
@Override
public int getCount() {
return SLIDES.length;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return true;
}
}
的問題是,這些圖像在彼此頂部繪製。如果我從左向右滾動,則看不到圖像。如果我向後滾動,則顯示的圖像將消失。 底線:我的ViewPager表現得出乎意料!
我重寫了四個必需的方法 in PagerAdapter
。我不確定我做錯了什麼,但我認爲它與instantiateItem()
和/或destroyItem()
有關。
任何想法?
它看起來你需要正確地實現isViewFromObject()。 http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#isViewFromObject(android.view.View,java.lang.Object) –
就是這樣!只是'返回arg0 == arg1'解決了它。感謝您指出了這一點! – iTurki