簡體   English   中英

如何確定Java中View的像素單位(px,dp等)?

[英]How to determine the Pixel Unit (px, dp, etc) of a View in Java?

我正在嘗試編寫單元測試來驗證是否使用了DIP。 我能夠使用editText.getTextSize()讀取大小值,但我無法讀取文本單元(在這種情況下,它是為了確保“dp”用法)。 如果某人將文本單位從dp更改為px或任何其他單位,則測試用例將失敗。

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

提前致謝!

首先,永遠不要在dp執行textSize。 他們應該總是使用sp因此有視力問題的人可以根據需要進行擴展。

其次,為什么要為此編寫單元測試? 你在測試什么? 如果你把一個給定的大小放在它實際使用的xml中? 不,這是google在測試框架時要測試的工作。 編寫一個單元測試就可以完全浪費時間,因為它永遠不會破壞。 您是否測試某個元素是否具有特定大小? 然后測試一下,你不會測試它是否在dp vs px指定。

已經有lint檢查您不使用dp作為文本大小的維度。 它會產生警告,因此不會破壞構建。 但你可以嚴格要求失敗:

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

@ Gabe的答案很好,你可以通過Android框架測試副作用。 如果你真的想要保護特定元素的大小是具有特殊尺寸的特殊值,那么為xml本身添加test / lint檢查。

至於我,它沒有多大價值 - 它不會破壞功能,它增加了一致性和支持的復雜性,它增加了運行測試的時間。 您也會通過回歸測試注意到它,或者在值得的情況下,用戶會抱怨它。

一個建議 - 查看樣式和主題,不要復制粘貼文本大小和其他視圖屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM