java - 为什么 1dp 在 Android 上同时表示 3px 和 2px?

标签 java android gridview interface screen

我对 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/

相关文章:

JScrollPane 中的 java 巨大的 BufferedImage

Java 应用程序在 getOutputStream() 处终止

asp.net - 在 GridView 中将可排序的行标题居中

c# - 如何在gridviewc中获取按钮Id和字段名称

java - 不断收到 "SQLiteException: no such table"异常

php - GridView 行作为链接,Yii2 中的操作列项目除外

java - Facebook Graph API 请求返回 IOException "Hostname <fbcdn-profile-a.akamaihd.net> was not verified"

java - 删除多 View 类型的列表项

java - LDAP JAVA 和用户密码

Android多SDK项目调试构建