layout-sw801dp 和 layout-v21 有什么区别?

问题描述

我有一个 900dp 的设备并且当我在 api 级别 21+ 上运行时,当所有这些文件夹下都存在布局文件时,

res/layout/
res/layout-sw801dp/
res/layout-v21/

一个会被接走,为什么?

解决方法

查看 Android 应用资源概览,特别是 providing alternate resources。表 2 描述了可用的资源限定符。据说

表 2 按优先顺序列出了有效的配置限定符...

因此,查看该列表,您在以下目录中定义了资源:

res/layout/:默认值
res/layout-sw801dp/ : 最小宽度
res/layout-v21/ : 21 及以上版本

优先顺序如下,资源搜索将在第一个匹配处停止。

res/layout-sw801dp/
res/layout-v21/
资源/布局/

由于您的屏幕宽度为 900dp,对资源的搜索将在 res/layout-sw801dp 处停止,因为 900dp >= 801dp。如果屏幕宽度为 700dp (res/layout-v21/ 处停止。如果版本是 API 18,屏幕宽度为 700dp,则将使用 res/layout/