v21更新到Android Studio,现在我有activity_main& activity_main(v21)?我在哪里工作?

时间:2018-05-14 19:44:03

标签: java android android-studio

Android Studio向我发出关于v21更新的警告,所以我做到了。现在在我的activity_main文件夹下我有2个文件:activity_main和activity_main(v21)。如果我在activity_main文件夹上工作,Android studio会更新这两个文件吗? (v21)文件是否必要?我不知道该怎么做。

1 个答案:

答案 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子文件夹中指定themesv21

我的意思是......如果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中不支持的东西)。

相关问题