我的目标是在我的应用中实施指南/操作方法 - 应用活动,用户可以在预定义的一组视图之间切换。所以,我决定使用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以意想不到的方式运行!
我在PagerAdapter
中覆盖了四个必需的方法。我不确定我做错了什么,但我认为它与instantiateItem()
和/或destroyItem()
有关。
任何想法?
答案 0 :(得分:0)
这是必要的:
@Override
public boolean isViewFromObject(View view, Object object)
{
return view == object;
}
答案 1 :(得分:0)
正如@beworker指出的那样,我没有正确实施isViewFromObject()
。我以为我是啊!
以下是我修复它的方法:
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}