2012-01-17 6 views
0

私はPagerTitleStripでカスタムビューページャーを使用しています。どちらもアンドロイド互換パッケージでサポートされています。推奨されているように私はこのようにそれを使用します。PagerTitleStripが実際のコンテンツと重複しています

<snok.stubefrie.DayPager 
    android:id="@+id/viewpager" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" > 

    <android.support.v4.view.PagerTitleStrip 
     android:id="@+id/strip" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top"/> 
    </snok.stubefrie.DayPager> 

titlestripは私viewpagerの実際の内容と重複するが(どちらも0,0から始まります)。何か案は?

答えて

4

ViewPagerにどのようにビューを追加しますか?

同じ問題が発生したとき、原因は私のPagerAdapter実装で間違った位置のビューを追加することでした。

悪いコードはこのようです。このコードは、働いていた

viewPager.setAdapter(new PagerAdapter() { 
    @Override 
    public Object instantiateItem(ViewGroup pager, int position) { 
    View view = createView(position); 
    ((ViewPager) pager).addView(view, position); 
    return view; 
    } 
    @Override 
    public void destroyItem (ViewGroup pager, int position, Object view) { 
    ((ViewPager) pager).removeViewAt(position); 
    } 
    ... 
}); 

私はPagerTitleStripを使用し始めたとき、しかし、PagerTitleStripビューはViewPagerの最初の子になった、それゆえaddView(view, 0)はViewPagerの内部構造を破りました。

addViewremoveViewを次のように置き換えて修正しました。

  • addView(ビュー、ポジション) - > addView(ビュー)
  • removeViewAt(位置) - > removeView((ビュー)ビュー)

はそれが役に立てば幸い!

0
public Object instantiateItem(View collection, int position) { 

     LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(R.layout.page_view, null); 


     ((ViewPager) collection).addView(view); 
     getPageTitle(position); 
     return view; 
    } 

addViewメソッドのインデックスを削除するだけです。それはストリップの重複問題を解決する。