简体   繁体   English

Android ViewPager布局

[英]Android ViewPager Layouts

I have one activity_main_layout with 3 linear layouts inside (layout1, layout2 and layout3). 我有一个带有3个线性布局(layout1,layout2和layout3)的activity_main_layout。 From my MainActivity I want to display specific layouts on buttonClicks. 在我的MainActivity中,我想在buttonClicks上显示特定的布局。 Like if firstButton is clicked then layout1 is displayed, secondButton displays layout2 and thirdButton displays layout3. 就像如果单击firstButton则显示layout1,secondButton显示layout2,thirdButton显示layout3。 I am using viewPager to achieve this. 我正在使用viewPager实现此目的。 Here is my Code Below: 这是我的下面的代码:

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 being the default, it displays on the screen on starting the MainActivity. layout1是默认设置,它在启动MainActivity时显示在屏幕上。

When I see the log it displays 当我看到日志时,它将显示

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

And then when i click secondButton Log shows layout3 called 然后,当我单击secondButton日志显示layout3称为

Any idea on this? 有什么想法吗? I am trying to achieve as shown in this image 我正在尝试实现此图所示

ViewPager will call first 2 pages at initial load, and on page change it will load next page in memory. ViewPager将在初始加载时调用前2页,并且在页面更改时它将加载内存中的下一页。

In your case layout1 and layout2 will be called at initial level and when you move to layout2 it will load layout3 . 在您的情况下, layout1layout2将在初始级别被调用,并且当您移至layout2 ,它将加载layout3

you can use setOffScreenPageLimit() to increase this number but bydefault it will load 2 pages at a time. 您可以使用setOffScreenPageLimit()增加此数字,但默认情况下它将一次加载2页。

You can refer this regarding your problem. 您可以参考这个关于你的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM