微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AndroidSVG:如何动态更改Inkscape svg颜色

如何解决AndroidSVG:如何动态更改Inkscape svg颜色

AndroidSVG允许动态更改颜色,如here所述。

以下代码可用于我95%的图标库...

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="64"
   height="64"
   id="svg2"
   style="display:inline">
  <defs
     id="defs4" />
  <g
     transform="translate(403.45398,-1106.6063)"
     id="layer1"
     style="display:inline">
    <g
       transform="matrix(7.6594323,7.6594323,2702.0005,-7795.5738)"
       id="g3766">
      <path
         d="m -401.264,1167.506 0,2.8346 1.41732,0"
         id="path4668"
         style="fill:none;stroke:#000000;stroke-width:0.53149605;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
      <path
         d="m -401.264,1162.5164 c 0,0 -0.5132,-0.012 -0.5132,0.6511 0,0.3318 0,0.1926 0,0.5423 0,0.3989 -0.64122,0.3626 -0.64122,1.0261 0,0.5996 0.047,0.4425 0,0.8135 -0.047,0.371 -0.76981,0.356 -0.76981,1.1045 0,0.9955 0.64122,0.8521 0.64122,0.8521 l 1.28301,0"
         id="path4711-1"
         style="fill:none;stroke:#000000;stroke-width:0.53149605;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
      <path
         d="m -401.264,0 0.5132,-0.012 0.5132,0.3989 0.64122,0.3626 0.64122,0.5996 -0.047,0.8135 0.047,0.371 0.76981,0.356 0.76981,0.9955 -0.64122,0.8521 -0.64122,0.8521 l -1.28301,0"
         id="path4711-1-3"
         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.53149605;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
    </g>
  </g>
</svg>

...但是在类似这样的Inkscape SVG上失败:

TabBarView

必要的CSS是什么?

反省一下,这可能是一个更笼统的CSS问题: 如何覆盖样式 part

解决方法

通常(在CSS中),您可以通过使用!important标志来实现。

svgIV.setCSS(String.format("* { fill:%s !important; }",color););

不幸的是,AndroidSVG中的CSS系统尚不支持!important。在我的待办事项清单上。

同时,您将需要转换这些SVG以使用属性(fill="whatever")或CSS。通过将它们加载到Inkscape中并另存为“ Optimized SVG”,可以轻松地将这些文件转换为使用属性形式。

,

创建此fork是为了回答问题。

它允许通过用户定义的回调对 any .svg进行全彩色控制,非常适合不希望手动转换2,735个Inkscape定义以符合当前限制的用户。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。