在android中定義視圖時,我們使用dp作爲邊距,大小等,但是我們使用sp的文本大小。 sp也與dp相同,但對於文本。那麼爲什麼我們不能使用sp? 我知道兩者之間的區別。我在問sp是否是dp的超集,爲什麼要使用dp?爲什麼不使用sp來指定視圖中的所有大小?爲什麼不使用sp而不是dp?
0
A
回答
1
dp 密度獨立像素 - 基於屏幕物理密度的抽象單位。這些單位相對於160 dpi屏幕,所以一個dp是160 dpi屏幕上的一個像素。 dp與像素的比率將隨着屏幕密度而變化,但不一定成正比。注意:編譯器同時接受「dip」和「dp」,但「dp」與「sp」更加一致。
sp- 與刻度無關的像素 - 這就像dp單元,但它也會根據用戶的字體大小偏好進行縮放。建議您在指定字體大小時使用本機,以便根據屏幕密度和用戶偏好進行調整。
參見Density Independence in android和Supporting Multiple Screens
2
測量的SP單元用於字體和是像素 密度依賴性以完全相同的方式,dp爲。根據您使用的sp值,決定字體大小的 Android設備將會考慮的額外計算爲 是用戶自己的字體大小設置。因此,如果您在具有普通大小字體的設備和模擬器上測試 您的應用程序,那麼具有 視力障礙(或者只是喜歡大字體)並且字體設置較大的用戶將看到 與您看到的有所不同在測試期間。
0
我們無法使用sp的原因是,當我們從設置中增加字體大小時,我們只想調整文本的大小,而不是按鈕和其他視圖。因此,我們使用dp作爲其餘部分,並僅用於文本。
相關問題
- 1. 什麼時候應該在佈局中使用dp或sp?
- 2. 爲什麼使用classmethod而不是staticmethod?
- 3. 爲什麼使用iconv_strpos而不是strpos?
- 4. 爲什麼使用registerDefaults:而不是setValue:forKey:?
- 5. 爲什麼使用TagBuilder而不是StringBuilder?
- 6. 爲什麼,而不是使用回調
- 7. 爲什麼使用結構,而不是
- 8. 爲什麼使用StringWriter而不是StringBuffer?
- 9. 爲什麼使用s:Line而不是mx:HRule?
- 10. 爲什麼使用ImageIcon而不是Image?
- 11. 爲什麼使用SQLiteOpenHelper而不是SQLiteDatabase?
- 12. 爲什麼使用MapFragment而不是SupportMapFragment?
- 13. 爲什麼使用FloatBuffer而不是float []?
- 14. 爲什麼使用追加()而不是+
- 15. 爲什麼使用Number.parseInt而不是parseInt()?
- 16. 爲什麼使用JLE而不是JL?
- 17. 爲什麼使用isinstance()而不是type()?
- 18. 爲什麼使用NoSQL而不是RDBMS?
- 19. 爲什麼使用uImage而不是zImage
- 20. 爲什麼使用HTML而不是HAML?
- 21. 爲什麼使用leal而不是incq?
- 22. 爲什麼使用TCPDF而不是mpdf
- 23. 爲什麼使用DataSource而不是XADataSource?
- 24. 爲什麼使用'='而不是':='?
- 25. 爲什麼使用char []而不是String?
- 26. 爲什麼=而不是:?
- 27. 在繪圖中使用「dp」和「sp」
- 28. Android不使用XML指定像素單位(如sp,px,dp)
- 29. Android使用DP爲什麼不釐米,毫米
- 30. 使用Spring SAML作爲IDP而不是SP
可能的重複http://stackoverflow.com/questions/2025282/what-is-the-difference-between-px-dp-dip-and-sp-on-android。 –
看到我的回答http://stackoverflow.com/a/40717863/6893465看到不同的屏幕大小的差異.. –