Android ViewPager布局

时间:2016-03-11 08:53:24

标签: android android-viewpager

我有一个activity_main_layout,里面有3个线性布局(layout1,layout2和layout3)。从我的MainActivity我想在buttonClicks上显示特定的布局。 就像单击firstButton然后显示layout1一样,secondButton显示layout2,thirdButton显示layout3。我正在使用viewPager来实现这一目标。这是我的代码:

private class ViewPagerAdapter extends PagerAdapter {

    @Override
    public int getCount() {
        return 3;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((View) object);
    }

    public Object instantiateItem(View collection, int position) {

        int resId = -1;
        switch (position) {
            case 0:
                resId = R.id.layout1;
                Log.e(TAG, "layout1 called");
                break;
            case 1:
                resId = R.id.layout2;
                Log.e(TAG, "layout2 called");
                break;
            case 2:
                resId = R.id.layout3;
                Log.e(TAG, "layout3 called");
                break;
        }
        return findViewById(resId);
    }

    @Override
    public void destroyItem(View collection, int position, Object view) {
        ((ViewPager) collection).removeView((View) view);
    }
}

layout1是默认值,它在启动MainActivity时显示在屏幕上。

当我看到日志显示时

03-11 14:34:22.776  23506-23506/com.myapp.app E/MainActivity﹕ layout1 called
03-11 14:34:22.777  23506-23506/com.myapp.app E/MainActivity﹕ layout2 called

然后当我点击secondButton Log时会显示名为

的layout3

对此有何想法?我想要实现as shown in this image

1 个答案:

答案 0 :(得分:0)

ViewPager将在初始加载时调用前2页,在页面更改时,它将在内存中加载下一页。

在您的情况下layout1layout2将在初始级别调用,当您转到layout2时,它将加载layout3

您可以使用setOffScreenPageLimit()来增加此数字,但默认情况下,它会一次加载2页。

您可以就问题提及this