0

我的目标是在我的应用中实现一个Guide/How-To-Use-App Activity,用户可以在其中切换一组预定义的视图。所以,我决定使用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()

有任何想法吗?

4

2 回答 2

0

这是需要的:

@Override
public boolean isViewFromObject(View view, Object object)
{
return view == object;
}
于 2013-08-20T06:10:56.343 回答
0

正如@beworker 指出的那样,我没有isViewFromObject()正确实施。我以为我是!

这是我修复它的方法:

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    return arg0 == arg1;
}
于 2013-08-20T06:14:40.920 回答