在Android中为ViewPager设置默认页面

我使用下面的代码,MAX是2页。 默认情况下,位置是0,并在右侧添加一个新页面。 我膨胀两个布局文件。

如何在应用程序启动时显示page1并向左侧添加新页面? 谢谢。

main.xml中

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <android.support.v4.view.ViewPager android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/pagerView" /> </LinearLayout> 

Java代码

 public class MyPagerActivity extends Activity { private Context context; private int pageNumber; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); context = this; ViewPager pagerView = (ViewPager)findViewById(R.id.pagerView); pagerView.setAdapter(new AwesomePagerAdapter()); } private class AwesomePagerAdapter extends PagerAdapter{ @Override public void destroyItem(View collection, int position, Object view) { ((ViewPager) collection).removeView((View)view); } @Override public void finishUpdate(View arg0) { //setPageTitles(getPageNumber()); } @Override public int getCount() { return 2; } @Override public Object instantiateItem(View collection, int position) { /* TextView tv = new TextView(MyPagerActivity.this); tv.setText("Bonjour PAUG " + position); tv.setTextColor(Color.WHITE); tv.setTextSize(30); ((ViewPager) collection).addView(tv,0); return tv;*/ View view = getViewToShow(position); ((ViewPager) collection).addView(view,0); return view; } @Override public boolean isViewFromObject(View view, Object object) { return view==((View)object); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { // TODO Auto-generated method stub } @Override public Parcelable saveState() { // TODO Auto-generated method stub return null; } @Override public void startUpdate(View arg0) { // TODO Auto-generated method stub } } private View getViewToShow(int position){ View view = null; View layout; LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); switch(position){ case 0: layout = mInflater.inflate(R.layout.elements, null); view = layout; break; case 1: view = layout = mInflater.inflate(R.layout.elements2, null); view = layout; break; } return view; } } 

你有没有尝试过使用setCurrentItem方法?

接受的解决scheme是好的,但设置适配器后调用此方法很重要。

  viewPager.setAdapter(adapterViewPager); viewPager.setCurrentItem(1); 

默认情况下,您必须设置当前值1以显示仅一个默认视图。 如果你没有设置setCurrentItem为1,你什么也看不到。

 viewPager.setAdapter(adapterViewPager); viewPager.setCurrentItem(1) 

这个解决scheme能够设置默认页面而不受来自寻呼机适配器类以外的干扰。

 @Override public Object instantiateItem(ViewGroup container, int position) { View currentPage = null; switch(position){ case 0: currentPage = LayoutInflater.from(context).inflate(R.layout.page0, null) break; case 1: currentPage = LayoutInflater.from(context).inflate(R.layout.page1, null) ///////////// This page will be default //////////////////// ((ViewPager)container).setCurrentItem(position); //////////////////////////////////////////////////////////// break; case 2: currentPage = LayoutInflater.from(context).inflate(R.layout.page2, null) break; return currentPage; }