最后一次阅读您的问题...确保您还为每种尺寸的设备设置了特定的布局。在您的屏幕截图中,您似乎正在尝试在平板电脑上运行它。你在手机上得到同样的结果吗?
设置布局
确保您的布局与此类似并具有 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>
设置您的活动
在“FragmentActivity”中设置 PagerAdapter 并确保实现“OnPageChangeListener”。然后在 onCreate 中正确设置 PagerAdapter。
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中需要,并且 reload 方法可能如下所示:
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
如果您有更具体的问题,我可以随时编辑(更新)我的答案来解决您的问题。祝你好运!:)