Читая ваш вопрос в последний раз ... убедитесь, что вы также настроили конкретные макеты для каждого устройства размера.На ваших скриншотах похоже, что вы пытаетесь запустить это на планшете.Получаете ли вы те же результаты на телефоне?
Настройка макета
Убедитесь, что ваш макет похож на него и имеет ViewPager:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/body_background">
<include layout="@layout/pagerbar" />
<include layout="@layout/colorstrip" />
<android.support.v4.view.ViewPager
android:id="@+id/example_pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
</LinearLayout>
Настройка вашей активности
Настройте свой PagerAdapter в «FragmentActivity» и убедитесь, что вы реализуете «OnPageChangeListener».Затем правильно настройте свой PagerAdapter в onCreate.
public class Activity extends FragmentActivity
implements ViewPager.OnPageChangeListener {
...
public void onCreate(Bundle savedInstanceState) {
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
pager = (ViewPager) findViewById(R.id.example_pager);
pager.setAdapter(adapter);
pager.setOnPageChangeListener(this);
pager.setCurrentItem(MyFragment.PAGE_LEFT);
...
}
/* setup your PagerAdapter which extends FragmentPagerAdapter */
static class PagerAdapter extends FragmentPagerAdapter {
public static final int NUM_PAGES = 2;
private MyFragment[] mFragments = new MyFragment[NUM_PAGES];
public PagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public int getCount() {
return NUM_PAGES;
}
@Override
public Fragment getItem(int position) {
if (mFragments[position] == null) {
/* this calls the newInstance from when you setup the ListFragment */
mFragments[position] = MyFragment.newInstance(position);
}
return mFragments[position];
}
}
...
Настройка вашего фрагмента
Когда вы настраиваете фактический ListFragment (ваши listViews), вы можете создавать несколько экземпляров с помощьюаргументы наподобие следующего:
public static final int PAGE_LEFT = 0;
public static final int PAGE_RIGHT = 1;
static MyFragment newInstance(int num) {
MyFragment fragment = new MyFragment();
Bundle args = new Bundle();
args.putInt("num", num);
fragment.setArguments(args);
return fragment;
}
Когда вы перезагружаете listViews (как только вы решите реализовать это), вы можете выяснить, на каком экземпляре фрагмента вы находитесь, используя аргументы, например:
mNum = getArguments() != null ? getArguments().getInt("num") : 1;
Если вы пошагово просматриваете свой код, вы заметите, что он будет проходить через каждый экземпляр, поэтому приведенный выше код необходим только в вашем onCreate , а метод перезагрузки может выглядеть следующим образом:
private void reloadFromArguments() {
/* mNum is a variable which was created for each instance in the onCreate */
switch (mNum) {
case PAGE_LEFT:
/* maybe a query here would fit your needs? */
break;
case PAGE_RIGHT:
/* maybe a query here would fit your needs? */
break;
}
}
Несколько источников, которые могут помочь вам с примерами, которые вы могли бы построить, а не начинать с нуля:
Больше объяснений и примеров с игровой площадки.http://blog.peterkuterna.net/2011/09/viewpager-meets-swipey-tabs.html, который ссылается на: http://code.google.com/p/android-playground/
Дополнительная информация и некоторые хорошие связи.http://www.pushing -pixels.org / 2012/03/16 / отзывчивый-мобильный-дизайн-на-андроиде-от-пейджер-до-действия-bar-tabs.html
Если у вас есть более конкретные вопросы, пост, и я всегда могу отредактировать (обновить) мой ответ, чтобы ответить на ваши вопросы.Удачи!:)