FrameLayout vs RelativeLayout覆盖

我需要为我的应用程序实现覆盖(半透明)屏幕,类似于Showcase视图

我的猜测是使用FrameLayout这个用例,因为它用来堆叠物品。 但是我惊讶地看到上面的库使用RelativeLayout

我的问题是什么时候使用FrameLayout ,如果不是这样的情况? 如果我采用FrameLayout方式有什么缺点?

select布局时常用的经验法则是select导致嵌套布局视图数量最less的组合。

具体到你的问题,RelativeLayout比更简单的FrameLayout更大,更有能力。 所以对于简单的布局,后者可能更有效率。 但是,如果使用RelativeLayouts,并且添加的定位选项允许您在较less数量的布局视图中实现GUI,那么这可能是一个更好的select。

这里有一个讨论一些权衡的页面 ,并演示一些有用的工具,在devise布局时使用。 它主要讨论RelativeLayout和LinearLayout,但是也可以在RelativeLayout和Framelayout之间进行select。 请记住,FrameLayout是一个更简单的布局。

编辑(2017):对于更复杂的布局,您可以通过使用ConstraintLayout来避免嵌套的布局。