Android提升和setElevation效果不一样

时间:2015-06-07 11:30:41

标签: android xml shadow android-elevation pixel-density

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

3 个答案:

答案 0 :(得分:10)

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

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

setElevation获取像素值。用户TinTran的comment是正确的。

答案 1 :(得分:1)

根据android documentation setElevation()

  

设置此视图的基本高程,以像素为单位

您需要将像素转换为dpi:

{{1}}

答案 2 :(得分:0)

那是因为java使用像素。所以你必须把它转换成dp

你可以用这个:

(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources().getDisplayMetrics())