我对 GridView 使用以下样式:
<style name="CaldroidDefaultGridView">
<item name="android:adjustViewBounds">true</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:listSelector">@null</item>
<item name="android:background">@color/caldroid_lighter_gray</item>
<item name="android:horizontalSpacing">1dp</item>
<item name="android:padding">1dp</item>
<item name="android:verticalSpacing">1dp</item>
在 Pixel 2 模拟器上,它显示 3px 的填充和 2px 的间距。如果我隐式指定 2px 来填充和间距,那么它会显示 2px - 所以任何地方都没有额外的像素。
它发生在两个方向上——水平和垂直。对于内边距,1dp 始终意味着 3px。对于间距 1dp 始终意味着 2px。
为什么 1dp 在 Android 上同时表示 3px 和 2px?那么我怎样才能得到实际值呢?因为我需要了解他们。
P.S.我知道所陈述的事实很难让人相信,所以我可以提供截图作为证据。
最佳答案
dp 表示与密度无关的像素。每部智能手机都有不同的数字,如果我没记错的话,大约是 300dp - 420dpi。无论如何,您的智能手机屏幕应该为 1920x1080。这是因为 1dp 可能同时是 2-3px。
您可以在官方开发者 Android 网站上了解更多信息。
https://developer.android.com/training/multiscreen/screendensities
关于java - 为什么 1dp 在 Android 上同时表示 3px 和 2px?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52229833/