【问题标题】:Add a View on bottom of Map fragment inside tab在选项卡内的地图片段底部添加视图
【发布时间】:2014-05-21 05:34:32
【问题描述】:

我创建了一个包含两个选项卡的活动。其中一个标签是地图(Google Maps API v2)。

没有 Activty 的布局(没有调用 setContent()),因为 Activity 屏幕是由 Fragment 动态填充的,具体取决于所选的选项卡。

现在,我需要在地图底部添加一个 TextView。

我想我可以扩展MapFragment,然后使用onCreateView 方法,以返回包含地图和TextView 的不同视图。我不知道我该怎么做。有什么建议吗?

编辑:

actionbar.addTab(actionbar.newTab()
                .setText("LIST")
                .setTabListener(new TabListener<ListFragment>(
                        this, "list", ListFragment.class)));


        Log.i("TabListener","chiamata TABLISTENER 2");
        actionbar.addTab(actionbar.newTab()
                .setText("MAP")
                .setTabListener(new TabListener<CustomMapFragment>(
                        this, "map", CustomMapFragment.class)));

TabListener 类:

public class TabListener<T extends Fragment> implements ActionBar.TabListener {
    private final Activity mActivity;
    private final String mTag;
    private final Class<T> mClass;
    private final Bundle mArgs;
    private Fragment mFragment;

    public TabListener(Activity activity, String tag, Class<T> clz) {
        this(activity, tag, clz, null);
    }

    public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) {
        mActivity = activity;
        mTag = tag;
        mClass = clz;
        mArgs = args;

        mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag);
        if (mFragment != null && !mFragment.isDetached()) {
            FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction();
            ft.detach(mFragment);
            ft.commit();

        }

    }

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        if (mFragment == null) {
            mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs);
            ft.add(android.R.id.content, mFragment, mTag);
        } else {
            ft.attach(mFragment);
        }

    }

    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        if (mFragment != null) {
            ft.detach(mFragment);
        }
    }

    public void onTabReselected(Tab tab, FragmentTransaction ft) {

    }
}

【问题讨论】:

  • 发布一些关于如何创建片段和 xml 的代码,我想看看你是如何设置它的
  • 编辑完成!不需要 xml,因为我没有设置布局。
  • 谢谢 Jai,但我不确定我是否有同样的问题。由于我使用的是选项卡,因此我没有为活动创建任何布局

标签: android google-maps android-fragments android-activity mapfragment


【解决方案1】:

您需要将 MapFragment(或 SupportMapFragment)放置在 FrameLayout 或 RelativeLayout 中。然后,您可以将 TextView 添加到与 MapFragment 的同级相同的布局中。也许最简单的方法是继承 MapFragment 并覆盖 onCreateView 方法。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    View view = super.onCreateView(inflater, container, savedInstanceState);
    FrameLayout wrapper = new FrameLayout(...);
    TextView tv = new TextView(...);
    wrapper.addView(view);
    wrapper.addView(tv);
    return wrapper;
}

【讨论】:

    猜你喜欢
    • 2017-07-23
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多