我试图实施以下设计。 TextView应按内容占用空间,其余部分为地图。
+----------------+
| |
| Map | <-- id/fragment_container_1
| |
| |
+----------------+
| |
| TextView | <-- id/fragment_container_2
| |
+----------------+
main.xml中
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/fragment_container_1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/fragment_container_2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
fragment_1.xml
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Client Label" />
</LinearLayout>
map.xml
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.gms.maps.MapView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map_view_observer" />
</LinearLayout>
Java代码:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
// map
Fragment fragmentMap = fragmentManager.findFragmentByTag("ObserverMapFragment");
if (fragmentMap == null) {
fragmentMap = ObserverMapFragment.newInstance();
fragmentTransaction
.replace(R.id.fragment_container_1, fragmentMap, "ObserverMapFragment");
}
// fargment 1
Fragment fragmentObserver = fragmentManager.findFragmentByTag("ObserverFragment");
if (fragmentObserver == null) {
fragmentObserver = ObserverFragment.newInstance();
fragmentTransaction
.replace(R.id.fragment_container_2, fragmentObserver, "ObserverFragment");
}
fragmentTransaction.commit();
然而,在那之后,我得到了地图占据所有可见空间。
+----------------+
| |
| |
| Map |
| |
| |
+----------------+
我犯了哪个错误? 也许我在使用多个片段的应用程序架构中出错了?
答案 0 :(得分:2)
像这样编辑你的main.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_weight="1"
android:id="@+id/fragment_container_1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/fragment_container_2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
答案 1 :(得分:2)
你可以试试这个
最后
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="2">
<FrameLayout
android:layout_weight="1"
android:id="@+id/fragment_container_1"
android:layout_width="match_parent"
android:layout_height="0dp"
/>
<FrameLayout
android:layout_weight="1"
android:id="@+id/fragment_container_2"
android:layout_width="match_parent"
android:layout_height="0dp" />
</LinearLayout>
答案 2 :(得分:-1)
不要给出textview大小和地图大小匹配父级。如果没有解决方案请告诉我。