【问题标题】:Android elevation and setElevation not the same effectAndroid的elevation和setElevation效果不一样
【发布时间】:2015-08-21 23:11:43
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    你可以用这个:

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

    【讨论】:

    • 欢迎来到 Stack Overflow!我已经编辑了您的问题以使其可读,请在下次使用编辑器更好地格式化您的代码。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      根据android documentationsetElevation()

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

      您需要将像素转换为dpi:

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

      【讨论】:

      • 应该是 4 * context.getResources().getDisplayMetrics().density?
      • @TinTran 如果我们将 px 转换为 dp 我们 /,否则我们 * -stackoverflow.com/a/12147550
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2014-12-15
      • 2013-10-28
      • 1970-01-01
      • 2021-12-28
      • 2013-02-26
      相关资源
      最近更新 更多