2012-04-02 131 views
1

我想在每個佈局中設置一個具有2個TextViews的佈局的ViewPager。我無法讓我的TextViews在我運行我的應用程序時正常顯示。我的傳呼機工作正常,但它不顯示我的XML佈局中的Textviews。Android ViewPager在佈局中顯示TextView

這裏是我的代碼,我在我的PageAdapter

public class MyPageAdapter extends PagerAdapter { 

public int getCount() { 
    return 31; 
} 

public Object instantiateItem(View collection, int position) { 

    LayoutInflater inflater = (LayoutInflater) collection.getContext() 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 



    int resId = 0; 

    switch (position) { 
     case 0: 
      resId = R.layout.main_menu; 

      break; 
     case 1: 
      resId = R.layout.article1; 

      break; 
     case 2: 
      resId = R.layout.article2; 

      break; 
     .... 
     .... 

    View view = inflater.inflate(resId, null); 

    ((ViewPager) collection).addView(view, 0); 

    return view; 

這是我有我的XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" android:background="@drawable/background"      android:clickable="true" 
android:id="@+id/layout13" 
android:weightSum="0"> 

<TextView 
    android:id="@+id/textView01" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical|center_horizontal" 
    android:padding="12dp" 
    android:text="@string/article13" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#000000" /> 

<TextView 
    android:id="@+id/textView02" 
    android:layout_width="match_parent" 
    android:layout_height="302dp" 
    android:gravity="center_vertical|center_horizontal" 
    android:text="@string/body13" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#000000" /> 



<android.support.v4.view.ViewPager 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@id/viewPager" > 

</android.support.v4.view.ViewPager> 

</LinearLayout> 

我試着在我的XML佈局移動各地正下方我的LinearLayout和我得到全屏幕,但我的文字消失。這可能是簡單的我想念的東西,但任何幫助,將不勝感激!

+0

你能解釋清楚... – 2012-04-02 05:23:10

回答

1

您只需要一個ViewPager。我的應用程序有9個片段和一個活動。 viewpager在main.xml中聲明一次。以下是重要代碼的樣子:

public class Polling extends SherlockFragmentActivity implements OnMenuItemClickListener { 
    private ViewPager mViewPager; 
    private TabsAdapter mTabsAdapter; 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mViewPager = new ViewPager(this); 
     mViewPager.setId(R.id.pager); 
     setContentView(mViewPager); 

    //here's the code that makes a tab, adds it to the actionbar, adds a tabadapter, and coordinates the viewpager: 

bar = getSupportActionBar(); 
     bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     bar.setDisplayShowTitleEnabled(false); 
     bar.setDisplayShowHomeEnabled(false); 
     mTabsAdapter = new TabsAdapter(this, mViewPager); 
     mTabsAdapter.addTab(bar.newTab().setText(R.string.login), 
       LoginFragment.class, null); 
     mTabsAdapter.addTab(bar.newTab().setText(R.string.economics), 
       EconFragment.class, null); 

這就是我的主要課程。你會失去,我從來沒有直接使用整個main.xml:內容視圖被設置爲ViewPager而不是佈局。然後,在我的主要活動中,我有一個處理ViewPager向左/向右的內部類,以及我的actionBar選項卡的管理。但它聽起來並不像你所使用的標籤,所以這個代碼下位未必是有益的:

public static class TabsAdapter extends FragmentPagerAdapter 
    implements ActionBar.TabListener, ViewPager.OnPageChangeListener { 
     private final Context mContext; 
     private final ActionBar mActionBar; 
     private final ViewPager mViewPager; 
     private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); 

     static final class TabInfo { 
      private final Class<?> clss; 
      private final Bundle args; 

      TabInfo(Class<?> _class, Bundle _args) { 
       clss = _class; 
       args = _args; 
      } 
     } 

     public TabsAdapter(SherlockFragmentActivity activity, ViewPager pager) { 
      super(activity.getSupportFragmentManager()); 
      mContext = activity; 
      mActionBar = activity.getSupportActionBar(); 
      mViewPager = pager; 
      mViewPager.setAdapter(this); 
      mViewPager.setOnPageChangeListener(this); 
     } 

     public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) { 
      TabInfo info = new TabInfo(clss, args); 
      tab.setTag(info); 
      tab.setTabListener(this); 
      mTabs.add(info); 
      mActionBar.addTab(tab); 
      notifyDataSetChanged(); 
     } 

     public int getCount() { 
      return mTabs.size(); 
     } 

     public SherlockFragment getItem(int position) { 
      TabInfo info = mTabs.get(position); 
      return (SherlockFragment)Fragment.instantiate(mContext, info.clss.getName(), info.args); 
     } 

     public void onPageSelected(int position) { 
      mActionBar.setSelectedNavigationItem(position); 
     } 
     public void onPageScrollStateChanged(int state) {} 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} 

     public void onTabSelected(Tab tab, FragmentTransaction ft) { 
      mViewPager.setCurrentItem(tab.getPosition()); 
      //Log.v(TAG, "clicked"); 
      Object tag = tab.getTag(); 
      for (int i=0; i<mTabs.size(); i++) { 
       if (mTabs.get(i) == tag) { 
        mViewPager.setCurrentItem(i); 
       } 
      } 
     } 
     public void onTabUnselected(Tab tab, FragmentTransaction ft) {} 
     public void onTabReselected(Tab tab, FragmentTransaction ft) {} 
     public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {} 
     public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {} 
    } 
} 
1

我會嘗試將您的ViewPager放置在textViews之上,嵌套在LinearLayout的正下方。對不起,我不能有更多的幫助 - 我對ViewPager的體驗與TabAdapter/actionBar標籤一起。

下面的代碼到我的傳呼機:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     /> 

</LinearLayout> 

我所有的接口的其餘部分來自其他選項卡,所以這是我的main.xml的全部。基本上我發佈這個說,我已經把我的viewpager作爲線性佈局中的唯一子部件,並且它管理整個屏幕。

+0

我已經試過,沒有運氣不幸地執行這個。當我直接在LinearLayout下嵌套它時,兩個文本視圖都消失了。當我將Viewpager放在textviews下面時,我得到textViews來顯示,但只有我的佈局的底部會滾動,如果這是有道理的。 – Ammonious 2012-04-05 07:43:26

+0

編輯我原來的文章 – Davek804 2012-04-05 16:43:39

+0

是的,我已經建立了類似的,除了我的textViews的過程。我對每個XML都有Viewpager,我假設這是我需要的嗎?另外我在想,我是否需要在我的PagerAdapter中的LayoutInflater下添加textViews?我一直在尋找一些關於如何完成這個的例子,但沒有運氣。再次感謝您的任何輸入! – Ammonious 2012-04-06 06:20:54