freedom_wings5
freedom_wings5
采纳率25%
2016-03-07 15:07 阅读 6.6k

安卓,viewpager中什么都不显示,求指点

应该已经用fragmentPagerAdapter设置好了fragment,可是viewpager set了adapter后,什么都没有。
先上图:
图片说明

图片说明
下面是content_main,在其中添加了viewpager的组件

 <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent"


    tools:showIn="@layout/activity_main" tools:context=".MainActivity"
    android:id="@+id/drawerlayout">




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

    <ListView
        android:id="@+id/listview"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:background="#ff6666"
        android:layout_gravity="left">

    </ListView>

</android.support.v4.widget.DrawerLayout>

下面是FragmentPagerAdapter:

 public class MyFragmentPagerAdapter extends FragmentPagerAdapter
{
    List<Fragment> list;
    String[] titles;
    public Fragment getItem(int position)
    {
        return list.get(position);

    }
    public int getCount()
    {
        return list.size();
    }
    MyFragmentPagerAdapter(FragmentManager fm,List<Fragment> list,String[] titles)
    {
        super(fm);
        this.list=list;
        this.titles=titles;
    }
    public CharSequence getPageTitle(int position)
    {
        return titles[position];
    }

}

下面是mainActivity中的与viewpager有关的部分:

  List<Fragment> listFragment=new ArrayList<Fragment>();
        listFragment.add(f1);
        listFragment.add(f2);
        listFragment.add(f3);
        listFragment.add(f4);
        listFragment.add(f5);
        viewPager=(ViewPager)super.findViewById(R.id.viewpager);
        fragmentPagerAdapter=new MyFragmentPagerAdapter(getSupportFragmentManager(),listFragment,new String[]{"标签1","标签2","标签3","标签4","标签5"});
       viewPager.setAdapter(fragmentPagerAdapter);
        tabLayout=(TabLayout)super.findViewById(R.id.tablayout);
        for(int i=0;i<5;i++)
        {
            tabLayout.addTab(tabLayout.newTab());
        }
        tabLayout.setTabMode(TabLayout.MODE_FIXED);
        tabLayout.setupWithViewPager(viewPager);

下面是填充viewpager第一页的fragment1的代码:

 public class Fragment1 extends Fragment
{
    RecyclerView recyclerView;
    MyAdapter myAdapter;

    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanced)
    {
        View v=inflater.inflate(R.layout.fragment1,container,false);
        myAdapter=new MyAdapter(getActivity());
            recyclerView=(RecyclerView)v.findViewById(R.id.recyclerview);

        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getActivity());
        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(myAdapter);
        return v;
    }
}

从上图已可见,这部分内容是不显示的,以下是viewpager第二页的fragment2:

 public class Fragment2 extends Fragment
{
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanced)
    {
        View v=inflater.inflate(R.layout.fragment2,container,false);
        return v;
    }

}

后面的fragment与此fragment类似,就不贴了。viewpager中什么都没有,但是从上面MainActivity中的setupWithViewPager的tabLayout就可以获取到标题。
请问应该怎么解决?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

6条回答 默认 最新

  • zcj324 金蛇儿 2016-06-28 02:58

    ViewPager控件的高度判定好像有问题,比如把它的属性layout_height="match_parent" 改成 layout_height="200dp"就能显示了,当然实际是不希望这样改的,你看看ViewPager的父容器有没有ScrollView之类的高度不确定的,去掉,或改改。

    点赞 2 评论 复制链接分享
  • devmiao devmiao 2016-03-07 15:08
    点赞 评论 复制链接分享
  • wen_wxpk 找工作那些事 2016-03-08 00:34

    哥们,viewpager要设change监听啊,不然手机怎么知道你换页面了,好像是onPageChangeListener

    点赞 评论 复制链接分享
  • luochoudan 丑旦 2016-03-08 06:50

    f1,f2,f3,f4,f5实例化了?

    点赞 评论 复制链接分享
  • huangf321123 keyborad_boy 2016-03-08 07:40

    MyFragmentPagerAdapter 这个类里面加一个destroyItem方法试下

    点赞 评论 复制链接分享
  • qq519934599 幽兰香风远 2016-03-08 08:51

    View v=inflater.inflate(R.layout.fragment1,container,false);
    这句中inflater是怎么实例化的?

    点赞 评论 复制链接分享

相关推荐