2012-04-02 15 views
1

私は各レイアウトで2つのTextViewsを持つレイアウトの数でViewPagerを設定しようとしています。私は私のアプリケーションを実行するときに正しく表示する私のTextViewsを取得するのに問題があります。私のページャは正常に動作しますが、XMLレイアウトでTextviewを表示していません。Android ViewPagerレイアウト内にテキストビューを表示

ここで私はこれは私が私の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レイアウトの周りを移動しようとしたしたものである私の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; 

を持っている私のコードです私のLinearLayoutと私はフルスクリーンを取得しますが、私のすべてのテキストが消えます。それはおそらく私が行方不明の単純なものですが、これについての助けがあれば幸いです!

+0

は、あなたが明確にそれを説明することができます... –

答えて

1

1つのViewPagerだけが必要です。私のアプリは9つの断片と1つの活動を持っています。ビューページは、main.xmlで1回宣言されます。重要なコードは次のようになります。

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の全体です。基本的に私はこれをポストして、リニアレイアウト内で唯一の子ウィジェットとしてビューページを取得し、画面全体を管理していると言っています。

+0

は、私は残念ながらありません運でこれを実装しようとしました。 LinearLayoutの直下にネストすると、両方のテキストビューが消えます。 ViewPagerをtextviewsの下に置くと、textViewsが表示されますが、レイアウトの一番下のセクションだけがスクロールして意味があれば表示されます。 – Ammonious

+0

私の元の投稿を編集しました – Davek804

+0

そうです、私は私のtextViewsの例外を除いて同様の設定をしています。私は自分のXMLのそれぞれにViewpagerを持っていますが、私はこれを持っている必要があると仮定していますか?また、私は考えていた、私は私のPagerAdapter内で私のLayoutInflaterの下にtextViewsを追加する必要がありますか?私は、これがどのように行われるかについてのいくつかの例を探してきましたが、運がなかったのです。何か入力をありがとう! – Ammonious

関連する問題