検索

ホームページ  >  に質問  >  本文

<长期寻求解决办法>Android ViewPager+Fragment页面空白

Adapter

public class AdvViewPagerAdapter extends FragmentPagerAdapter {
    private Context context;
    private List<String> urls;
    private List<ImageView> imgs;
    private List<Fragment> fragments;

    public AdvViewPagerAdapter(FragmentManager fm, Context context, List<String> urls) {
        super(fm);
        this.context = context;
        this.urls = urls;
        // imgs = new ArrayList<ImageView>();
        fragments = new ArrayList<Fragment>();
        for (String url : urls) {
            MyImageFragment fragment = new MyImageFragment(context, url);
            fragments.add(fragment);
        }
    }

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

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

    @Override
    public Fragment getItem(int position) {
        MLog.i(fragments.get(position));
        return fragments.get(position);
    }
}

Fragment

class MyImageFragment extends BaseFragment {
        private View view;
        private ImageView mImageView;
        private String url;

        public MyImageFragment(Context context, String url) {
            super(context);
            this.url = url;
        }

        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            view = getLayout(inflater, container, R.layout.image_layout, false);
            initView();
            Picasso.with(getContext()).load(url).into(mImageView);
            return view;
        }

        @Override
        public void initView() {
            mImageView = (ImageView) view.findViewById(R.id.image_layout_iv);
        }
    }

R.layout.image_layout

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <ImageView
            android:id="@+id/image_layout_iv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/dark_gray" />
    </LinearLayout>

Test代码

    public class WelcomeActivity extends BaseActivity {

    private ViewPager viewpager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);
        initView();
    }

    @Override
    public void initView() {
        viewpager = (ViewPager) findViewById(R.id.viewpager);
        List<String> urls = new ArrayList<String>();
        urls.add("http://hiphotos.baidu.com/baidu/pic/item/4ec2d5628535e5dd3c10363671c6a7efce1b621f.png");
        urls.add("http://hiphotos.baidu.com/baidu/pic/item/a8ec8a13632762d07842064fa6ec08fa503dc6c6.png");
        urls.add("http://fanyi.baidu.com/static/translation/img/footer/app_e8ff780.png");
        viewpager.setAdapter(new AdvViewPagerAdapter(getSupportFragmentManager(), getContext(), urls));
    }
}

!BaseActivity 继承自
android.support.v4.app.FragmentActivity

!BaseFragment 继承自
android.support.v4.app.Fragment

大家讲道理大家讲道理2771日前610

全員に返信(4)返信します

  • 天蓬老师

    天蓬老师2017-04-17 17:26:49

    この質問は終了しました_(:3‖∠)_

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:26:49

    Fragment がパラメータ化された構造を持つことは推奨されないのではないでしょうか?さらに、ピカソの使用法は、長さと幅をできるだけ決定することです。そうでない場合は、次のような自動適応を使用します。 リーリー

    ピカソは表示と制御を支援するためにできるだけ多くの詳細を設定することをお勧めします。空白の意味が imageView の背景さえ表示されないことを意味する場合は、Activity のコードを確認して、設定に問題があるかどうかを確認する必要もあります。

    返事
    0
  • 迷茫

    迷茫2017-04-17 17:26:49

    initView() メソッドは親クラス BaseFragment で呼び出されていますか?それとも単に抽象的なのでしょうか?フラグメントでは、getActivity() を使用してコンテキストを取得するのが最適です。これは、Picasso にとってより使いやすいものです。つまり、Picasso.with(getActivity()) を最初に試してください。

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:26:49

    fragmentment は getItem() をオーバーライドしないため、各ページャーがロードする必要があるフラグメントを取得できません。

    返事
    0
  • キャンセル返事