java - v21 更新到 Android Studio,现在我有 activity_main 和 activity_main (v21)?我在哪里工作?
问题描述
Android Studio 给我一个关于 v21 更新的警告,所以我做到了。现在在我的 activity_main 文件夹下,我有 2 个文件:activity_main 和 activity_main (v21)。如果我在 activity_main 文件夹上工作,Android Studio 会更新这两个文件吗?(v21) 文件是必需的吗?我不知道该怎么办。
解决方案
Stack Overflow 鼓励这些类型的问题被否决/标记/删除,但我会做得更好。
当您在文件夹(资源)中看到子/类似文件夹时,您看到的是/是匹配res/
时将使用的替代资源。config_qualifier
例如:
layouts
通常可以看到 value 文件夹具有layouts-v21
或类似的版本。
假设你有这个 XML:
res/layout/main.xml
并且您需要为运行 API 21 或更高版本的设备提供一个布局,其中包含仅适用于 API 21 的特定小部件/视图……</p>
一种解决方案(但不是唯一的解决方案)是为这些设备提供备用资源,并在找不到时回退到原始资源:
res/layout-v21/main.xml
如果设备在 API 21 或更高版本上运行,Android 将在运行时自动为您选择“正确”的设备。
如果你不提供它(假设你只有 /layout 文件夹中的 main,而不是 v21),当 android 无法在 layout-v21 中找到它时,它会尝试转到下一个(按优先级),在这个案例,只是/布局。
如果它在那里找不到它,你会得到一个异常。:)
这就是“资源” 101。希望它有所帮助。
现在……回答你的问题。如果它们不同,您将需要处理“两者”。实际上,取决于您支持的 minApi(显然低于 21,否则您不需要例外)。如果是这种情况(您支持 21 台以上的设备),那么是的,您需要同时处理这两种设备以确保它们在所有平台上都能正常工作。
或者,对于布局,通常不需要两者兼有。我想说最好有一个共同的布局,并在各自的子文件夹中指定styles.xml
和。themes
v21
我的意思是……如果some_attribute
只适用于 API 21+,你可以有:
values/styles.xml
that 没有 some_attribute 和 a
values-v21/styles.xml
有它。有多种方法可以解决这个问题,有时你必须“复制粘贴”东西来复制它们。如果您可以支持 api 21+,那么您将很少需要做出这些例外。(因为 API 21 和 23 带来了很多变化……在那个 API 级别进行区分是很常见的,就像 Android Studio 为您所做的那样,因为 API 21 带来了许多较低 api 不支持的东西)。
推荐阅读
- c# - DNN / ASP.NET - 如何从文本字段中提取数字?
- spring - Spring Security 和 CAS。认证成功后的匿名用户
- r - 使用 R,如何从数据集中的字符串中提取多个 URL/模式匹配,然后将每个 URL 放在其自己的相邻列中?
- permissions - 服务帐户的 Keycloak uma-grant 类型票证似乎不适用于策略
- python - 如果该单词在文件中,我将如何读取用户在文件中给出的单词,并用用户给定 msg 的星号替换单词?
- swift - 向核心数据添加记录
- python-3.x - 仅在串口设备输出数据时写入
- java - iText 7:没有边框也没有背景的图像字段(按钮)(透明)
- jsonschema - 以其他 json 对象中的值为条件使用 if/then/else 模式验证
- python - 用另一个列值填充缺失的日期