我正在为用于较小屏幕的应用程序开发另一种简化布局。此布局不应包含在较大布局中使用的地图片段,但是,如果可能的话,我应该避免编程更改。显示布局的活动也会使用其ID来填充片段,因此我无法删除它。我尝试使片段不可见,如下所示:
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
但片段仍然可见。当我将可见性设置为&#34;隐形&#34;时,也会发生同样的情况。片段的默认位置被视图部分隐藏,但是当我在布局周围移动片段时,无论我放在哪里,它仍然显示为可见。
片段是否忽略了可见性参数?还有其他非程序化解决方案吗?
答案 0 :(得分:3)
为了供将来参考,dora的答案有效,但我建议使用FrameLayout而不是LinearLayout,它更简单,打算用于内部的单个View:
<FrameLayout
android:id="@+id/dummyLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" >
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
还有另一种方法 - 将片段的宽度和高度更改为0dp,但这被视为黑客攻击,通常不太正确。
答案 1 :(得分:2)
我不确定这是否符合您的要求,但您可以在要隐藏的片段上方添加一个虚拟布局容器,并将该布局可见性添加到已删除/可见,无论您想要哪个。但是,当您想要显示片段时,您还应该使片段虚拟父布局可见性变为可见。
<LinearLayout
android:id="@+id/dummyLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:visibility="gone" >
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>