在选项卡内的地图片段底部添加视图
Posted
技术标签:
【中文标题】在选项卡内的地图片段底部添加视图【英文标题】: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,因为我没有设置布局。 检查这个问题***.com/questions/14694119/… 谢谢 Jai,但我不确定我是否有同样的问题。由于我使用的是选项卡,因此我没有为活动创建任何布局 【参考方案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;
【讨论】:
以上是关于在选项卡内的地图片段底部添加视图的主要内容,如果未能解决你的问题,请参考以下文章