Android提升和setElevation效果不一样

qwe*_*rtz 6 xml android shadow android-elevation pixel-density

我注意到当我在xml中使用elevation属性并将其设置为4dp时,我得到一个正常的阴影.当我在java中使用setElevation(4)时,我得到的阴影比xml属性少.我该如何解决这个问题?

Ber*_*mpl 11

Anton Kovalyov给出的答案几乎是正确的,但它实际上是另一种方式.要获得正确的高程,您需要将dp转换为像素并将其输入setElevation,因此正确的答案如下所示:

setElevation(4 * context.getResources().getDisplayMetrics().density);

setElevation取一个像素值.用户TinTran的评论是正确的.


Ant*_*yov 0

根据android文档setElevation()

设置此视图的基础高程(以像素为单位)

您需要将像素转换为 dpi:

setElevation(4 / context.getResources().getDisplayMetrics().density);
Run Code Online (Sandbox Code Playgroud)

  • 它应该是 4 * context.getResources().getDisplayMetrics().密度? (7认同)