8

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

4

3 回答 3

14

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

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

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

于 2016-05-24T15:09:52.587 回答
0

根据android文档setElevation()

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

您需要将像素转换为 dpi:

setElevation(4 / context.getResources().getDisplayMetrics().density);
于 2015-06-07T11:59:12.253 回答
0

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

你可以使用这个:

(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources().getDisplayMetrics())
于 2018-05-01T15:23:08.637 回答