在将MapFragment添加到相同的布局奇怪行为后,在布局内膨胀视图

时间:2014-06-27 20:33:31

标签: android android-layout layout android-fragments

我有一个活动的以下父布局:

<?xml version="1.0" encoding="utf-8"?> <ViewPager
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

我还有Fragment的{​​{1}}的以下布局:

ViewPager

在运行时,<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <FrameLayout android:id="@+id/mapLayout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </RelativeLayout> </LinearLayout> 会填充片段的FrameLayout方法,如下所示:

onCreateView()

预期的行为是,由 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... ViewGroup MapView = (ViewGroup) inflater.inflate(R.layout.frament_mood_map, container, false); if(savedInstanceState == null) { Fragment mapFragment = new SupportMapFragment(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); //Adding map fragment to the FrameLayout. transaction.add(R.id.mapLayout, mapFragment, "map").commit(); } //Adding the mood panel. ViewGroup mapLayout = (ViewGroup) MapView.findViewById(R.id.mapLayout); mapLayout.addView(inflater.inflate(R.layout.mood_panel_layout, null)); ... return MapView; } Fragment填充的容器是View,前者首先添加到容器中,然后后者将在地图的顶部,我想要在顶部显示一个带有按钮的小面板的地图,我无法在XML中定义FrameLayout因为(引用文档,是的我已经尝试过做到这一点):

  

注意:在布局时,您无法将布局扩展为片段   包括一个。仅在添加时支持嵌套片段   到动态片段

我做错了什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

经过数小时的摆弄并尝试找到解决方法后,我发现Google Maps Android API v2上有更新的MapView,因此对于那些需要在{{1}内嵌套的问题页面片段ViewPager只需使用MapFragment

我在以下SO问题中找到了MapViewShould I use MapView or MapFragment