Android Studio向我发出关于v21更新的警告,所以我做到了。现在在我的activity_main文件夹下我有2个文件:activity_main和activity_main(v21)。如果我在activity_main文件夹上工作,Android studio会更新这两个文件吗? (v21)文件是否必要?我不知道该怎么做。
答案 0 :(得分:0)
Stack Overflow鼓励这些类型的问题被低估/标记/删除,但我会做得更好。
当您在res/
文件夹(资源)中看到子/类似文件夹时,您所看到的是config_qualifier
匹配时将使用的备用资源。
例如:
layouts
值文件夹通常被视为具有layouts-v21
或类似版本。
假设你有这个XML:
res/layout/main.xml
并且您需要为运行API 21或更高版本的设备提供布局,其中包含仅适用于API 21的特定窗口小部件/视图...
一个解决方案(但不是唯一的解决方案)是为这些设备提供备用资源,并在找不到时回退到原始设备:
res/layout-v21/main.xml
如果设备在API 21或更高版本上运行,Android将自动在运行时为您选择“正确的”。
如果你不提供它(假设你只有/ layout文件夹中的main,而不是v21),当android在layout-v21中找不到它时,它会尝试去到下一个(按优先顺序),在这种情况下,只是/ layout。
如果在那里找不到,你会得到一个例外。 :)
这就是“资源”101.希望它有所帮助。
现在......回答你的问题。如果它们不同,您将需要处理“两者”。事实上,取决于你支持哪种minApi(显然低于21,否则你不需要例外)。如果是这种情况(您支持超过21个设备),那么是的,您需要同时处理两者以确保它们适用于所有平台。
或者,对于布局,通常不需要同时使用两者。我要说最好只有一个公共布局,并在相应的styles.xml
子文件夹中指定themes
和v21
。
我的意思是......如果some_attribute
仅适用于API 21+,您可以拥有:
values/styles.xml
没有some_attribute和a
拥有它的values-v21/styles.xml
。有多种方法可以解决这个问题,有时你必须“复制粘贴”东西来复制它们。如果你可以支持api 21+,那么你将不那么经常做出这些例外。 (因为API 21和23带来了大量的变化......通常在那个API级别上进行区分,就像Android Studio为你做的那样,因为API 21带来了许多在低级api中不支持的东西)。