解决Android SVG文件引用color.xml颜色报错: java.lang.IllegalArgumentException: Invalid color value
Android SVG文件引用颜色报错: java.lang.IllegalArgumentException: Invalid color value 解决方案
在Android开发中,如果尝试在SVG文件中直接引用colors.xml中定义的颜色,会遇到java.lang.IllegalArgumentException: Invalid color value的错误。这是因为SVG是一种矢量图形格式,无法直接识别Android的颜色资源。
问题原因:
SVG文件无法直接解析Android的资源文件,例如@color/account_iv_contact_top_color。
解决方案:
要在SVG文件中使用Android中定义的颜色,您需要将颜色值直接写入SVG文件,或者使用支持Android资源文件的SVG库。
方法一:直接在SVG文件中定义颜色
将颜色值以十六进制格式 (#RRGGBB 或 #AARRGGBB) 直接写入SVG文件。
<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'>
<rect x='10' y='10' width='80' height='80' fill='#FF4081'/>
</svg>
方法二:使用支持Android资源文件的SVG库
-
引入AndroidSVG库:
在您的项目中添加AndroidSVG库的依赖。您可以从Maven Central仓库获取。
-
在colors.xml中定义颜色:
<resources> <color name='account_iv_contact_top_color'>#FF4081</color> </resources> -
在SVG文件中引用颜色:
<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'> <rect x='10' y='10' width='80' height='80' fill='@color/account_iv_contact_top_color'/> </svg> -
使用AndroidSVG库加载SVG:
使用
AndroidSVG库加载SVG文件,它会自动解析并应用Android的颜色资源。SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.my_svg); ImageView imageView = findViewById(R.id.my_image_view); imageView.setImageDrawable(svg.createPictureDrawable());
通过以上两种方法,您就可以在Android应用程序中成功使用SVG文件,并避免'Invalid color value'错误。
原文地址: https://www.cveoy.top/t/topic/jkn3 著作权归作者所有。请勿转载和采集!