我有一个android项目为不同的屏幕分辨率提供不同的dimens.xml。我通过在 /res 文件夹中定义 value-swXXXdp 文件夹来实现此目的。
但是,我现在无法区分以下两种屏幕分辨率:
到目前为止我尝试过的:
有谁有提示,我必须使用什么文件夹名称,才能仅为屏幕分辨率 2 提供 dimens.xml ?
提前谢谢您!
有谁有提示,我必须使用什么文件夹名称,才能仅为屏幕分辨率 2 提供 dimens.xml ?
我认为这是不可能的,至少对于 w 或 h 限定符来说是不可能的。为什么?根据Android开发者的提供资源指南,您可以指定加载某些资源所需的最小屏幕宽度或高度,但不能指定最大值。
让我们看看如果您像这样组织资源会发生什么:
res/
values/
values-h1024dp/
Android 具有根据设备配置匹配资源的定义行为。当您在屏幕高度为 800dp 的设备上打开应用程序时,最佳匹配将是
values
,因为 1024dp 不适合 800dp。但是,如果您在屏幕高度为 1024 或更高 的较大设备上打开相同的应用程序,它将使用 values-h1024dp
目录。
不幸的是,您只想对特定尺寸的设备使用第二个资源目录,即 768dpx1024dp。
在 Android 中提供资源的设计方式与您期望的不同,但有一种 方法可以实现您所需要的 - 别名资源。
为了提供资源目录结构,其中只有一个目录与配置为 w1024dp 的设备匹配,我将创建以下结构:
res/
values/
values-h1024dp/
values-h1025dp/
并在
values-h1025dp
中创建包含 values
中资源别名的 xml 文件。这样你就可以拥有一个资源文件来匹配除屏幕高度为 1024dp 之外的所有设备。
请注意,它适用于具有您指定的配置的设备,但仅限于横向模式,因为我只使用了 h 限定符。