Android设置android:elevation无效?那是你的姿势不对!

Posted 胖子爱你520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android设置android:elevation无效?那是你的姿势不对!相关的知识,希望对你有一定的参考价值。

因为本人开发的一个app是套壳应用,所以MainActivity可能会被多个product用到,最开始在某一个product开发UI的时候用到了android:elevation这个属性,能够营造出阴影的效果,没有任何问题。过了一段时间另一个product也需要用到MainActivity,因为是套的是webview加载H5页面,H5开发小伙伴用到了一个绘制图表的功能,但是最终运行到app的时候发现图表无法正常展示,当时查了半天这个问题是因为Activity开启了硬件加速,当把MainActivity的android:hardwareAccelerated="false"设置成false时,再看webview能正常显示图表,这就为后续埋下了坑!

今天再看之前的product中个人中心的页面时,头部不显示阴影效果了

但是这块代码并没有动过,阴影设置的代码也是正确的,那就很奇怪了,在网上查了一些资料,都是说什么没有给view设置background的话elevation是不起作用的,这些都是常识,如果有同学是因为这个导致的,那就可以走了,有的说要加上这一行android:outlineProvider=“bounds”,实测过后也是不行的,直到看到有人弱弱的提了一句,硬件加速的问题!恍然大悟的感觉,因为MainActivity是公用的,所以很可能是这个问题导致的,试过之后阴影重现光明!

所以解决办法是在MainActivity中加了判断,如果是某个product,就通过代码设置开启硬件加速

if (Configuration.isXxxApp()) 
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
      WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

下面给一个设置elevation的xml示例:

<RelativeLayout
  android:id="@+id/rl_user_header"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginLeft="20dp"
  android:layout_marginTop="125dp"
  android:layout_marginRight="20dp"
  android:layout_marginBottom="10dp"
  android:background="@drawable/bg_user_header_shadow"
  android:elevation="5dp">

  <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="112dp"
    android:background="@drawable/bg_radius_5dp_white">

	......

  </RelativeLayout>

</RelativeLayout>

写在最后,如果你也发现明明都设置了,但是elevation就是不生效,赶紧检查一下是否关闭了硬件加速吧!

以上是关于Android设置android:elevation无效?那是你的姿势不对!的主要内容,如果未能解决你的问题,请参考以下文章

android字体颜色如何设置?

Android圆角背景设置

android studio怎么设置背景颜色

怎么在广告条上设置按钮 android

怎么给android 设置边框

android 如何设置按钮 不可点击