Android 中的 Dimen 值混乱

Dimen value confusion in Android

我有这样的需求

对于宽度: sw0-320: 100dp,

sw321- : 200dp

我应该把这个值放在哪里?

文件夹中:100dp或200dp,

values-w320dp文件夹中:100dp或200dp,

一头雾水!研究了一些文档,但不明白这里的事实!

Android 首先找到它可以用于它 运行 的设备的最具体的资源。

这意味着如果你在 values-sw320dp 中放置了一些东西,并且你是 运行 最小宽度为 320dp 或更大的设备,它会先看这里。如果在该文件夹中找不到资源,它将在基础 values 文件夹中查找。如果您是 运行 最小宽度为 319dp 的设备,它将 不会 values-sw320dp 中查找资源。

如果设备的最小宽度或可用宽度为 320dp 或更大,将使用 values-sw320dpvalues-w320dp 文件夹中的数据,否则使用 values 文件夹中的数据将会被使用。因此,在这种情况下,您需要在 values 文件夹中放置 100dp,在 values-sw320dpvalues-w320dp 中放置 200dp。问题说要求是关于 sw(最小宽度),但随后它在文件夹名称中使用可用宽度 (w) 限定符,因此不清楚您需要哪个。

这方面的文档在 https://developer.android.com/guide/topics/resources/providing-resources 中,您可以在那里查看 smallestWidth (sw<N>dp) 和 availableWidth (w<N>dp) 限定符。