Android elevation 用途

elevation是2014 年Google 推出了Material Design新的 Android 支持库 v7之后才有的产物,目前我就用它做阴影,但是它还有一个权重的问题。

一.添加view阴影

1.代码设置android:elevation="Xdp"

 <LinearLayout
            android:elevation="8dp"
            android:id="@+id/ll_order"
            android:layout_width="match_parent"
            android:layout_height="58dp"
            android:orientation="horizontal"
            android:background="@color/white"
 >

            <TextView
                android:id="@+id/tv_order_go"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/bt_corners_red"
                android:gravity="center"
                android:text="预约"
                android:textColor="@color/white"
                android:textSize="17sp" />
        </LinearLayout>

2.效果图:


image.png

3.Button设置没效果:
Button设置elevation阴影没效果是因为默认主题里,已经有了elevation设置,所以再设置就没用了,可以先用android:stateListAnimator=”@null”把默认动画置空,然后再设置elevation。

4.注意设置背景颜色
要设置背景颜色,没有背景颜色是没有阴影效果的,设置完后运行效果如下图。

二.设置权重

1.例如:我们再RelativeLayout/FrameLayout上盖两层view

  <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone">

        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#e91010" />

        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="40dp"
            android:background="#51df0e" />
    </RelativeLayout>

正常显示:


image.png

但是如果我们再红色布局上设置了elevation

  <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="visible">

        <View
            android:elevation="1dp"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#e91010" />

        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="40dp"
            android:background="#51df0e" />
    </RelativeLayout>

效果是这样:


image.png

红色布局提到了最上面,android:elevation="1dp",相当于在这些View里面他的权重提高了,升官啦!

在android的世界里面,elevation起到了权重的作用,而且,每一个View的默认权重都是0dp,如果我们把红色view的elevation设置为android:elevation="0dp",那么一切照旧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,573评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,975评论 2 59
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,554评论 0 17
  • 前言:ConstraintLayout是Google在16年Google I/O大会上与AS 2.2预览版一起发布...
    海是倒过来的天_67f2阅读 1,574评论 0 7
  • 看了今天的内容,我苦笑了若干声,然后郑重其事的写下了这句话: 把练习本身,当成自己的一部分,为了练习而练习,别老盯...
    楚丹丹阅读 344评论 5 5