简单却强大,层叠控件的终极武器
在Android开发的六大布局中,FrameLayout(帧布局)堪称最简单却最具特色的存在。它不像LinearLayout那样刻板地水平或垂直排列子元素,也不像RelativeLayout那样需要定义复杂的相对位置关系。
FrameLayout以一种近乎"躺平"的姿态,让所有子控件堆叠在屏幕的左上角,后加入的控件会直接覆盖在先前控件的上层,形成一种层叠效果。
这种特性使得FrameLayout虽然使用场景相对专一,但在特定情况下却无可替代。本文将带你深入探索FrameLayout的魔法世界,揭示这个被低估的布局如何成为Android界面设计中的秘密武器。
一、 什么是FrameLayout:初识帧布局
想象一下,你有一叠扑克牌,每张牌都代表一个UI控件——这就是FrameLayout的工作原理。它直接在屏幕上开辟一块空白区域,所有添加到这个布局中的视图都会以层叠的方式显示,就像扑克牌一张张叠在一起。
默认情况下,第一个被添加到布局中的视图显示在最底层,最后一个则被放在最顶层,上一层的视图会覆盖下一层的视图。这种布局机制类似于堆栈结构,后进先出(在视觉上是"后进在上")。
与其他布局相比,FrameLayout的属性非常简单,学习成本极低。但它却是实现某些特定界面效果的终极利器,比如游戏界面中的层叠元素、底部导航栏、悬浮按钮等。
二、 FrameLayout的核心特性:不只是简单
1. 层叠顺序:后来者居上
FrameLayout最显著的特点就是其子视图的层叠行为。在XML文件中定义的顺序决定了它们的视觉层次:先定义的位于底层,后定义的位于上层。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#FF33ffff"
android:layout_gravity="center" />
<TextView
android:layout_width="240dp"
android:layout_height="240dp"
android:background="#FF33ccff"
android:layout_gravity="center"/>
<TextView
android:layout_width="180dp"
android:layout_height="180dp"
android:background="#FF3399ff"
android:layout_gravity="center" />
</FrameLayout>
上述代码中,第一个TextView(300dp×300dp)位于最底层,第二个TextView(240dp×240dp)居中层,第三个TextView(180dp×180dp)位于最上层。如果它们完全不透明且大小相同,我们将只能看到最上面的第三个TextView。
2. 前景图像:永远置顶的"封面"
FrameLayout有一个独特的前景概念——通过android:foreground属性可以设置一个始终显示在所有子视图之上的图像,就像一本书的封面,无论书页内容如何,封面始
Android帧布局全解析

最低0.47元/天 解锁文章
1844

被折叠的 条评论
为什么被折叠?



