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

Css AndroidSVG:如何动态更改Inkscape svg颜色,css,inkscape,androidsvg,Css,Inkscape,Androidsvg,如前所述,允许动态更改颜色 以下代码适用于我95%的图标库 SVGImageView svgIV; ...... String color = "#FEFBDE" svgIV.setCSS(String.format("* { fill:%s; }", color);); 。。。但在Inkscape SVG上失败,例如: <?xml version="1.0" encoding="UTF-8" standa

如前所述,允许动态更改颜色

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

SVGImageView svgIV;
...... 
String color = "#FEFBDE"
svgIV.setCSS(String.format("* { fill:%s; }", color););
。。。但在Inkscape SVG上失败,例如:

<?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,0,0,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,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-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>

必要的CSS是什么(如果有的话)

经过思考,这可能是一个更一般的CSS问题: 如何覆盖样式的一部分?

通常(在CSS中)实现这一点的方法是使用
!重要
标志

svgIV.setCSS(String.format("* { fill:%s !important; }", color););
不幸的是,AndroidSVG中的CSS系统还不支持
!重要信息
。它在我的待办事项清单上

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

它允许通过用户定义的回调对任何.svg进行全色控制,对于不希望手动转换2735 Inkscape定义以符合当前限制的用户来说,这是非常好的选择