Filhos do ViewPager em um único layout XML

Eu li um monte de postagens sobre o uso do componente ViewPager do Android usando apenas código Java, eu odeio construir interfaces de usuário programaticamente porque eu prefiro usar o layout XML. Você pode fazer isso facilmente usando também alguns arquivos de layout e aumentando-os, mas … A maneira perfeita é aninhar as visualizações filhas em um ÚNICO arquivo xml.

E você pode fazer isso!

<LinearLayout >="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>

O problema é que você continua precisando do adaptador para rotear o pedido, mas pelo menos as visualizações estão aninhadas.

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);

Uma versão melhor e autocuidada é implementá-la lendo as crianças com getChildAt ()

Feliz Hacking!