【问题标题】:Supportmapfragment inside viewpager支持viewpager里面的mapfragment
【发布时间】:2013-10-17 14:21:42
【问题描述】:

任何人都可以提供最佳工作示例来在 viewpager 中使用 supportmapfragment 吗?我已经尝试了很多教程,但我无法实现它。我只需要片段及其布局。我知道如何设置viewpager。提前致谢。

【问题讨论】:

  • 您需要哪一部分?我的工作正常
  • 我只需要片段及其布局。我知道如何设置 viewpager
  • 我发布了片段。很快就会添加一个xml

标签: android android-maps-v2


【解决方案1】:

“似乎没有任何效果”是对您症状的无用描述。将来,请随时实际解释出了什么问题。

话虽如此,here is a sample project 显示 SupportMapFragmentViewPager 中的使用。请注意,您需要使用ViewPager 的子类,覆盖canScroll() 以确保地图仍然可以水平滑动。

public class MapAwarePager extends ViewPager {
  public MapAwarePager(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  @Override
  protected boolean canScroll(View v, boolean checkV, int dx, int x,
                              int y) {
    if (v instanceof SurfaceView || v instanceof PagerTabStrip) {
      return(true);
    }

    return(super.canScroll(v, checkV, dx, x, y));
  }
}

【讨论】:

  • 非常感谢。我会试一试。顺便说一句,我已经编辑了我的问题;)
  • 我认为 FragmentStatePagerAdapter 是在 ViewPager 中包含片段的最佳用途。将查阅我的书以获取更多信息:)
  • 这个答案救了我:)
  • 示例项目救了我。
【解决方案2】:

在我的 onCreate 中,我执行以下操作:

mViewPager = new CustomViewPager(this);
mViewPager.setId(R.id.viewPager);
setContentView(mViewPager);

final FragmentManager fm = getSupportFragmentManager();

mViewPager.setAdapter(new FragmentStatePagerAdapter(fm) {

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

            @Override
            public Fragment getItem(int pos) {

                    Contact mContact = mContactList.get(pos);
                    int mCurrentPosition = mContact.getPosition();
                    return ContactDetailsFragment.newInstance(mCurrentPosition);                 
            }
        });

  //loads the proper fragment on its meant-to-be position into the ViewPager
  mViewPager.setCurrentItem(position);

在我的 ContactDetailFragment 我有这个方法:

public static ContactDetailsFragment newInstance(int position) {
    Bundle args = new Bundle();
    args.putInt(EXTRA_CONTACT_ID, position);

    Log.i("ContactDetailsFragment","EXTRA_CONTACT_ID = "+EXTRA_CONTACT_ID);

    ContactDetailsFragment mCdf = new ContactDetailsFragment();
    mCdf.setArguments(args);

    return mCdf;
}

【讨论】:

  • SupportMapFragment 在哪里?
  • ContactDetailsFragment 扩展 SupportFragment --> 所以它继承自超类。
【解决方案3】:

我正在寻找有关 stackoverflow 上的 supportmapfrgment 的帮助,当我来到这里时。

我目前正在从事类似的项目。

如果您现在仍然需要,请随时与我联系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多