这似乎是一个错误,但也许我做了一些非常愚蠢的事情而且无法看到它。我有这些值文件:
整数值文件的行为符合预期。在默认的integers.xml中,我有:
<integer name="card_item_columns">2</integer>
和integers.xml(w840dp)我有:
<integer name="card_item_columns">3</integer>
但是当谈到尺寸文件时,只有sw600dp似乎可以做任何事情。对于dimens.xml(sw600dp),我有这个:
<dimen name="card_width">264dp</dimen>
对于dimens.xml(w840dp)我有这个:
<dimen name="card_width">400dp</dimen>
如果我在纵向中使用Nexus 7仿真器设备,它会显示2列。当我旋转它时,我看到3列符合预期。这证明它的宽度至少为840dp,因为integers.xml(w840dp)文件是唯一可以从中获取3列的地方。
但是,如果它是w840dp,为什么它不使用dimens.xml(w840dp)中的卡片宽度值?这不可能吗?可以&#34; w&#34;限定符不会覆盖&#34; sw&#34;预选赛?我认为应该。
我可以调整sw600dp文件中的值并反映更改,表明它已从布局文件中正确调用。
我没有到达什么基本概念?我觉得很难相信这里有一个错误。当然,如果有,其他人会注意到它。发现愚蠢的错误以获得一些积分。或者给我一个导致解决方案的线索。感谢。
答案 0 :(得分:1)
Android网站上有关资源限定符优先级的文档非常全面: Providing Alternate Resources
所有其他条件相同,smallestWidth的优先级高于Available width
Configuration | Qualifier value
smallestWidth | sw<N>dp
Available width | w<N>dp