写点什么

RelativeLayout 根布局里有一个子布局预期一直展示,但子布局 RelativeLayout 被 覆盖了

作者:lichong951
  • 2025-12-02
    北京
  • 本文字数:674 字

    阅读完需:约 2 分钟

RelativeLayout 根布局里有一个子布局预期一直展示,但子布局RelativeLayout被 覆盖了

原因一句话 LinearLayout 宽高都是 match_parent,又在 RelativeLayout默认不设置任何相对位置,于是它把父布局空间全部占满,之前靠 align*margin 定位的子控件自然被盖住。


解决思路(3 选 1)

  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>
复制代码
  1. 把 LinearLayout 改成 wrap_content 或固定值

如果你只是想弹个面板,就别让它 match_parent

<LinearLayout    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_centerInParent="true"    android:orientation="vertical">
复制代码
  1. layout_weight(嵌套一层 LinearLayout)

顶层改成横向或纵向 LinearLayout,把“始终展示”的 view 放 weight=0,内容区放 weight=1 即可。


一句话总结 别让 LinearLayout 又满屏又不相对定位;给前面控件加 id,再用 layout_below / layout_above / layout_alignParentBottom 等规则把空间切出来,就不会覆盖。

用户头像

lichong951

关注

人生三定|SmartApi|大前端++ 2018-12-28 加入

开创前端晋升路线:【大前端++】技术路线; SmartApi 开发工具软件 著有《修心力》(正在出版中)、《健康的本质》(正在写作中)。。。其他杂谈文章等等;

评论

发布
暂无评论
RelativeLayout 根布局里有一个子布局预期一直展示,但子布局RelativeLayout被 覆盖了_android_lichong951_InfoQ写作社区