2015-10-30 51 views
0

我添加ViewPager的视图(而不是片段)位于片段的中间,但由于某种原因它没有显示。ViewPager没有显示在片段的中间

它有ViewGroup父容器(FrameLayout),viewpager动态添加(也试图直接插入到布局中)。

可能是我想念的东西。 对任何提示感到高兴,谢谢!

ViewPager:

public class TabsPagerAdapter extends PagerAdapter { 

List<View> pages = null; 

public TabsPagerAdapter(List<View> pages) { 
    this.pages = pages; 
} 

@Override 
public int getCount() { 
    return pages.size(); 
} 

@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view == object; 
} 

@Override 
public Object instantiateItem(ViewGroup collection, int position) { 
    View v = pages.get(position); 
    collection.addView(v, 0); 
    return v; 
} 

@Override 
public void destroyItem(ViewGroup collection, int position, Object view) { 
    collection.removeView((View) view); 
} 

} 

片段:

... 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View root = inflater.inflate(R.layout.fragment_product, container, false); 

    FrameLayout pagerPlaceholder = (FrameLayout) root.findViewById(R.id.viewpager_placeholder); 

    List<View> pages = new ArrayList<>(); 
    View page = LayoutInflater.from(getDashboardActivity()).inflate(R.layout.test_layout, null); 
    TextView textView = (TextView) page.findViewById(R.id.text_view); 
    textView.setText("Test1"); 
    pages.add(page); 

    View page2 = LayoutInflater.from(getDashboardActivity()).inflate(R.layout.test_layout, null); 
    TextView textView2 = (TextView) page2.findViewById(R.id.text_view); 
    textView2.setText("Test2"); 
    pages.add(page); 

    TabsPagerAdapter tabsPagerAdapter = new TabsPagerAdapter(pages); 
    ViewPager viewPager = new ViewPager(getDashboardActivity()); 
    viewPager.setAdapter(tabsPagerAdapter); 
    pagerPlaceholder.addView(viewPager, 0, 
      new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
    return root; 
} 

fragment_product.xml

... 
<LinearLayout 
     android:id="@+id/fragment_catalog_content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:visibility="visible"> 
... 
    <FrameLayout 
      android:id="@+id/viewpager_placeholder" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent">   
     </FrameLayout> 
</LinearLayout> 
+0

你能发布完整的布局吗?我猜'getDashboardActivity()'返回'getActivity()',不是吗?因为我无法重现这个问题:当我改变错字('page2'而不是'page')时,我可以看到两个视图。 – Fllo

回答

0

我想你的代码,发现两条线索,希望这将有助于:

  1. 您忘了提交FragmentManager的交易吗?

    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction transaction = fragmentManager.beginTransaction(); 
    transaction.add(R.id.frament_container, new MyFragment()); 
    transaction.commit(); 
    
  2. page被添加到ArrayList pages两次,就需要在第二page.add(page)添加page2

我只是推了演示,github

+0

谢谢你的错误! \t 我不使用片段(而是作为对象查看) – Ardi

-1

如果您使用NestedFragment,请使用getChildFragmentManager();

简单:

FragmentManager fragmentManager = getChildFragmentManager(); 
FragmentTransaction transaction = fragmentManager.beginTransaction(); 
transaction.add(R.id.frament_container, new MyFragment()); 
transaction.commit();