Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据api版本在android xml文件中使用不同的属性?_Android_Android Styles - Fatal编程技术网

如何根据api版本在android xml文件中使用不同的属性?

如何根据api版本在android xml文件中使用不同的属性?,android,android-styles,Android,Android Styles,我正在创建一个使用大量图标的项目,为了方便地支持多个屏幕,我使用矢量图形(我相信它们被称为SVG路径)创建了图标,这些图标在我的设备中运行正常 不幸的是,当我尝试在较旧的设备上使用它(android低于5.0的任何设备)时,我遇到了一个充气机异常 搜索之后,我发现为了在这些设备上使用矢量图形,而不是使用 android:src 我必须使用 app:srcCompat 这确实解决了这个问题,但是现在当我将它部署到一个更新的设备上时,图标不会显示(至少它不会崩溃,所以这是个问题) 有没有办法根据

我正在创建一个使用大量图标的项目,为了方便地支持多个屏幕,我使用矢量图形(我相信它们被称为SVG路径)创建了图标,这些图标在我的设备中运行正常

不幸的是,当我尝试在较旧的设备上使用它(android低于5.0的任何设备)时,我遇到了一个充气机异常

搜索之后,我发现为了在这些设备上使用矢量图形,而不是使用

android:src
我必须使用

app:srcCompat
这确实解决了这个问题,但是现在当我将它部署到一个更新的设备上时,图标不会显示(至少它不会崩溃,所以这是个问题)

有没有办法根据api版本定义某种样式

这样我就可以按照以下思路做一些事情:

<style name="android.api.21">
    <item name="android:src">ic_menu</item>
</style>

<style name="android.api.19">
    <item name="app:srcCompat">ic_menu</item>
</style>

ICU菜单
ICU菜单

提前感谢您提供的任何帮助

只需使用相同的样式名称(例如,style.xml)和资源文件夹(app/main/res)创建具有命名值的不同文件夹(通用版本),values-v21(对于API 21,Lolipop 5.0),values-v19(API 19,KitKat 4.4)等等等等

不确定你是否能做这样的事。。。但是你可以为不同的APIs使用不同的布局是的,这会有帮助,更新两个布局而不是一个布局会更烦人,但我想如果不能使用样式,我会尝试一下,谢谢,你是在使用compile'com.android.support:appcompat-v7:23.4.0'吗,我不确定这是因为,但是我可以使用android:src来表示所有API>14的向量绘制。但请注意,在API21之前,svg将在Apkunfortunattelly中转换为相应的png。我使用的是Xamarin,我们只升级到了版本23.3,我将在Xamarin推出23.4时尝试一下。是的,它似乎与appcompat一起工作,但是当我尝试使用ContextCompat.GetDrawable检索向量drawable时会出现问题,所以我希望这是某种Xamarin错误。所以我要用价值观的东西,如果它被修复了,我会替换它