【问题标题】:How to determine the Pixel Unit (px, dp, etc) of a View in Java?如何确定 Java 中视图的像素单位(px、dp 等)?
【发布时间】:2016-07-13 21:49:16
【问题描述】:

我正在尝试编写一个单元测试来验证是否使用了 DIP。我可以使用 editText.getTextSize() 读取大小值,但我无法读取文本单元(在这种情况下,它是为了确保“dp”的使用)。如果有人将文本单位从 dp 更改为 px 或任何其他单位,测试用例应该会失败。

<EditText
    android:id="@+id/someId"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="48dp"/>

提前致谢!

【问题讨论】:

    标签: java android unit-testing android-studio robolectric


    【解决方案1】:

    首先,永远不要在dp 中使用 textSize。他们应该始终使用sp,以便有视力问题的人可以根据需要扩大规模。

    其次,您为什么要为此编写单元测试?你在测试什么?如果您将给定的大小放入实际使用的 xml 中?不要,这是谷歌在测试框架时测试的工作。为此编写单元测试完全是浪费时间,因为它永远不会中断。您是否正在测试某个元素是否具有特定大小?然后测试它,你不会测试它是否在dppx 中指定。

    【讨论】:

      【解决方案2】:

      已经有 lint 检查您没有使用 dp 作为文本大小的维度。它会产生警告,因此不会破坏构建。但是你可以严格要求失败:

      lintOptions {
              warningsAsErrors true
              abortOnError true // Fail early.
      }
      

      @Gabe 的回答有一个很好的观点,即您可以通过 Android 框架测试副作用。如果您真的想保护特定元素的尺寸是具有特殊尺寸的特殊值,请为 xml 本身添加测试/lint 检查。

      对我来说,它没有太多价值 - 它不会破坏功能,它增加了一致性和支持的复杂性,它增加了运行测试的时间。您也会通过回归测试注意到它,或者在值得的情况下,用户会抱怨它。

      一个建议 - 关注样式和主题,不要复制粘贴文本大小和其他视图属性

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-25
        • 2012-01-08
        • 2019-08-03
        • 2011-12-31
        • 1970-01-01
        • 2017-04-10
        • 2015-06-22
        • 2014-08-21
        相关资源
        最近更新 更多