RelativeLayout 根布局里有一个子布局预期一直展示,但子布局RelativeLayout被 覆盖了
原因一句话
LinearLayout 宽高都是 match_parent,又在 RelativeLayout 里 默认不设置任何相对位置,于是它把父布局空间全部占满,之前靠 align* 或 margin 定位的子控件自然被盖住。
解决思路(3 选 1)
- 让 LinearLayout 只占剩余区域,而不是全屏
给前面那个需要“一直展示”的控件一个 id,然后让 LinearLayout 用剩余规则:
<!-- 顶部固定条,始终可见 -->
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="48dp"
android:text="标题栏"
android:gravity="center"
android:background="@color/colorPrimary"/>
<!-- 内容区,只占剩余 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_below="@id/title" <!-- 关键:在标题下方 -->
android:orientation="vertical">
<!-- 你的内容 -->
</LinearLayout>
- 把 LinearLayout 改成 wrap_content 或固定值
如果你只是想弹个面板,就别让它match_parent:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical">
- 用
layout_weight(嵌套一层 LinearLayout)
顶层改成横向或纵向LinearLayout,把“始终展示”的 view 放weight=0,内容区放weight=1即可。
一句话总结
别让 LinearLayout 又满屏又不相对定位;给前面控件加 id,再用 layout_below / layout_above / layout_alignParentBottom 等规则把空间切出来,就不会覆盖。

浙公网安备 33010602011771号