权重
FrameLayout里面,后写的View会覆盖之前写的View上面,例如:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#ff0000">
<View
android:layout_width="200dp"
android:layout_height="200dp"
android:background="#00ff00" />
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#0000ff" />
</FrameLayout>
如果我们给被压在下面的绿色view,增加android:elevation="1dp"
,完整代码如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#ff0000">
<View
android:layout_width="200dp"
android:layout_height="200dp"
android:background="#00ff00"
android:elevation="1dp" />
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#0000ff" />
</FrameLayout>
我们会看到蓝色不见了
elevation起到了权重的作用,而且,每一个View的默认权重都是0dp,如果把绿色的设置成1dp,相当于在这个View的权重就提高了,就显示到最上面的了
阴影
一个正常情况下的View
当我们增加了elevation属性后
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#000000"
android:elevation="30dp"
/>
能明显看到有个阴影
在Material Design主题当中给UI元素引入了高度的概念,视图的高度由属性Z来表示,决定了阴影的视觉效果,Z越大,阴影就越大且越柔和。但是Z值并不会影响视图的大小