2 freedom wings5 freedom_wings5 于 2016.03.07 23:07 提问

安卓,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个回答

wen_wxpk
wen_wxpk   2016.03.08 08:34

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

freedom_wings5
freedom_wings5 我不需要在页面切换的时候做些什么,所以就不用设置监听了。这里viewpager切换页面的时候tablayout能自动切换。另外我的问题是viewpager中的内容不显示
2 年多之前 回复
luochoudan
luochoudan   Ds   Rxr 2016.03.08 14:50

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

huangf321123
huangf321123   2016.03.08 15:40

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

qq519934599
qq519934599   2016.03.08 16:51

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

zcj324
zcj324   2016.06.28 10:58

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

devmiao
devmiao   Ds   Rxr 2016.03.07 23:08
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ViewPager实现一个页面多个Item的显示
代码在:  https://code.google.com/p/trinea-android-demo/source/browse/trunk/src/cn/trinea/android/demo/ViewPagerMulTiFragmentDemo.java  实现要注意的是:  1. ViewPager在上层布局中加入       Java代码   an
Android ViewPager被嵌套在ScrollView中不显示的问题的解决方案
解决方案: 1.设置ScrollView的fillViewPort为true 2.重写ScrollView,然后嵌套使用无任何问题,如何重写,具体看以下地址 http://stackoverflow.com/questions/2646028/android-horizontalscrollview-within-scrollview-touch-handling 自定一个
fragment中嵌套viewpager,vierpager中有多个fragment不显示
底部用RadioGroup控制fragment的切换。以上有五个fragment。第一个fragment,代表着首页。首页又是一个类似tab的fragment,使用viewpager切换着两个fragment。 /////////// //初始化数据 private void initdata() { fragments = new ArrayList(); fragmen
安卓viewPager怎么设置初始显示的位置
正常我们默认的是第一个页面  但是有的时候我们不想直接使用默认第一个页面 应该用 setCurrentItem (int item) 方法设置其初始显示的页面, 我们想让第几个页面为初始页面  参数中就写几
Android开发笔记—ViewPager的基础使用
先在XML布局文件里创建一个ViewPager控件 <android.support.v4.view.ViewPager android:id="@+id/viewPager1" android:layout_width="wrap_content" android:layout_height="wrap_content" />然后创建N个XML
安卓:ViewPager及带指示圆点的
打开应用程序看到的滑动页面:滑动时无小圆点 1.在布局文件中加入ViewPager控件: 2.逻辑代码中: findViewById 找到控件:android.support.v4.view.ViewPager 设置ViewPager的适配器 自定义适配器,继承自PagerAdapter: 注意要使程序在滑到最后一张时不崩溃需在适配器中destroyItem方法里注释掉调用父
关于ViewPager被嵌套在ScrollView中不显示以及滑动冲突的问题
ScrollView嵌套ViewPager,要不是业务需求这样,估计没人愿意这么干!因为这种方式,会问题多多,简单百度一下这两个关键词“ScrollView ViewPager”,基本都是有冲突求解答的!是的,我也遇到了。这么一嵌套,ViewPager直接不显示了,尝试了如下几种方式,均无果:1、设置ScrollView的android:fillViewPort=”true”2、设置ViewPage
多个viewpager导致的不显示问题
转自:http://www.trinea.cn/android/android-source-code-analysis/multi-viewpager-to-fragment-not-init/ 场景:封装后自定义的viewpager,在同一个Activity页面添加多个时,由于id相同,会导致viewpager不显示 原因: 多个ViewPager引发的Fragment未
ViewPager.setCurrentItem(0)报错
原本代码: private Runnable advPlay = new Runnable() { @Override public void run() { int num = advViewPager.getChildCount(); if(num > 0){ if(1 == num){ //advViewPager.setCurrentItem(0); }else
Viewpager中嵌套ListView
原文地址:http://spacetech.dk/android-viewpager-with-listview-pages.html MainActivity package com.example.koreancoursetest; import java.util.Vector; import android.app.Activity; import android.content.