我是否需要每个DPI文件夹中的样式文件?

时间:2014-02-19 19:32:23

标签: android android-resources

如果我在 values 文件夹中只有一个样式文件,并且它包含项目,请参阅 dimens 文件中的项目,然后我得不到正确的结果。只有在每个 values 文件夹(MDPI,HDPI等)中都有 style 文件时,我才会得到正确的结果。

这有点奇怪,因为对于 drawable 我只能在一个文件夹中拥有文件,而在其他文件夹中可以使用不同DPI的资源,而且工作正常。 当我使用 dimens 的引用时,有人可以解释Android搜索样式项吗?

这是一个小例子。

值/ styles.xml

<resources>
    <style name="message_item_topic">
        <item name="android:textSize">@dimen/message_id_topic</item>
    </style>
</resources>

值/ dimens.xml

<resources>
    <dimen name="message_id_topic">12sp</dimen>
</resources>

值-HDPI / dimens.xml

<resources>
    <dimen name="message_id_topic">15sp</dimen>
</resources>

2 个答案:

答案 0 :(得分:1)

根据Providing Alternate Resources guide

  

Android支持多个配置限定符,您可以通过用破折号分隔每个限定符来将多个限定符添加到一个目录名称。 Table 2按优先顺序列出有效的配置限定符 - 如果对资源目录使用多个限定符,则必须按照表中列出的顺序将它们添加到目录名中。

rules for finding the best matching resource

  1. 消除与设备配置相矛盾的资源文件。 (例外:DPI)
  2. 选择列表中的(下一个)最高优先级限定符
  3. 是否有任何资源目录包含此限定符?
    • 如果否,请返回步骤2并查看下一个限定符。 (在示例中,答案为&#34; no&#34;直到达到语言限定符。)
    • 如果是,请继续执行步骤4.
  4. 消除不包含此限定符的资源目录
  5. 根据流程图:

    flowchart

    每个资源分别根据这些规则加载(即,每个dimen的查找发生在每个资源上,与其他资源无关)。您遇到的任何显示问题可能是由于不知道按DPI(dpsp)缩放的内容与不合并(px)的内容之间的差异 - 使用{{1并且dp并且您不需要为不同的DPI设备声明备用资源(除了drawable之外的任何东西)。

答案 1 :(得分:0)

如果您使用px,cm,in,...那么在不同的值中使用不同的dimens.xml-(l | m | h | xh | xxh)dpi是有意义的。

事情是相对的 周围的设备太多了。
您永远不会确定您的应用是否适合现有设备 有些用户会与您联系并要求修复他们的设备 因此,您将阅读规范,制作模拟器,添加特定的drawable /值并重新发布您的应用程序。请记住,TABLETS将需要特殊的drawable / values文件夹。