背景
在我的应用程序中,我有很多共享相同静态叠加层的片段。每个片段都可以动态调整大小(即它的权重可能会改变),所以我希望我的叠加层的大小与它同步。因此,要么让他们成为兄弟姐妹,要么就像我想到的那样,让一个人进入另一个兄弟姐妹。第一种方法工作正常,但它意味着引入一个额外的ViewGroup
,这似乎是多余的(或不是吗?)。后者是我遇到问题的那个。
问题
考虑这两种布局。
Container R.id.container
是我将片段放在FragmentManager
运行时的地方。
片段R.id.overlay
是我的叠加层。
区别在于哪一个是父母。
布局A.
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment class="com.example.OverlayFragment"
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
布局B。
<fragment class="com.example.OverlayFragment"
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</fragment>
在两个情况下,我的叠加层最终低于容器(按z轴)。也就是说,无论容器在层次结构中的作用如何,容器都会保持重叠。
在这种情况下定义视图的z顺序有哪些规则?它只是初始化的顺序吗?我无法谷歌。
感谢。
答案 0 :(得分:1)
当系统创建此活动布局时,它会实例化每个活动布局 在布局中指定的片段并调用onCreateView()方法 对于每一个,检索每个片段的布局。系统插入 片段返回的视图直接代替 元件。
所以我认为你应该使用这样的东西:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<fragment class="com.example.OverlayFragment"
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>