Android:如何在单个xml文件中实现viewpager和视图

Dil*_*rla 17 android android-viewpager

更新:我可以使用以下布局在Viewpager中实现3个文本视图:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

       <TextView
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:text="view 1"/>
       <TextView
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:text="view 2"/>
       <TextView
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:text="view 3"/>

    </android.support.v4.view.ViewPager>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我想为这3个视图实现ViewPager.我希望在单个xml文件中有viewpager和那3个视图.每个页面都包含每个文本视图.我已经看到了一些示例,但每个页面都是使用单独的xml布局文件实现的.

如何在单个xml文件中为这3个视图实现viewpager.如果可能,请提供示例代码或示例.

jja*_*nso 51

您可以使用嵌套子视图的单个XML布局.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:id="@+id/page_one"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >
                    <TextView
                    android:text="PAGE ONE IN"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:textColor="#fff"
                    android:textSize="24dp"/>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/page_two"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >
                    <TextView
                    android:text="PAGE TWO IN"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:textColor="#fff"
                    android:textSize="24dp"/>
        </LinearLayout>

    </android.support.v4.view.ViewPager>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

但是......你还需要用适配器来处理这个问题.在这里,我们返回查找的视图ID,而不会膨胀任何其他布局.

    class WizardPagerAdapter extends PagerAdapter {

        public Object instantiateItem(View collection, int position) {

            int resId = 0;
            switch (position) {
            case 0:
                resId = R.id.page_one;
                break;
            case 1:
                resId = R.id.page_two;
                break;
            }
            return findViewById(resId);
        }

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

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == ((View) arg1);
        }
    }



    // Set the ViewPager adapter
    WizardPagerAdapter adapter = new WizardPagerAdapter();
    ViewPager pager = (ViewPager) findViewById(R.id.pager);
    pager.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

我的问题是......这里的一些大师可以教我如果ViewPager可以从XML读取孩子并自动构建页面而不使用instantiateItem()吗?

  • 您需要覆盖方法destroyItem:@Override public void destroyItem(View arg0,int arg1,Object arg2){} (11认同)

Com*_*are 0

如何在单个 xml 文件中实现这 3 个视图的 viewpager。

抱歉,但这是不可能的。