Читая ваш вопрос в последний раз ... убедитесь, что вы также настроили определенные макеты для каждого размера устройства. Судя по твоим скриншотам, ты пытаешься запустить это на планшете. Вы получаете те же результаты на телефоне?
Настройка макета
Убедитесь, что ваш макет похож на этот и имеет 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/responsive-mobile-design-on-android-from-view-pager-to-action-bar-tabs.html а>
Если у вас есть более конкретные вопросы, напишите, и я всегда могу отредактировать (обновить) свой ответ, чтобы ответить на ваши вопросы. Удачи! :)
person
Codeversed
schedule
10.04.2012