Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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
Android VectorDrawable不';我不会出现在版面上_Android_Svg_Vector Graphics - Fatal编程技术网

Android VectorDrawable不';我不会出现在版面上

Android VectorDrawable不';我不会出现在版面上,android,svg,vector-graphics,Android,Svg,Vector Graphics,我创建了一个SVG矢量图形(使用CorelDraw X7),如下所示: 然后我把它转换成矢量绘图格式。但是,当我尝试在布局中使用它时,它不会出现: 正如您所看到的,在它旁边还有另一个可以绘制的向量,可以很好地工作(因此svg2android和Android Studio可以很好地工作) 这是实际可绘制图形的xml: <?xml version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.and

我创建了一个SVG矢量图形(使用CorelDraw X7),如下所示:

然后我把它转换成矢量绘图格式。但是,当我尝试在布局中使用它时,它不会出现:

正如您所看到的,在它旁边还有另一个可以绘制的向量,可以很好地工作(因此svg2android和Android Studio可以很好地工作)

这是实际可绘制图形的xml:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
    android:fillColor="#000000"
android:pathData="M 1382,680 c 107,0 194,112 194,251 0,138 -87,250      -194,250 -2,0 -3,0 -5,0 -17,98
-85,219 -230,219 l 0,77 c 0,28 235,1 235,45 l 0,55 -556,0 0,-55 c 0,-59 235,-11
235,-45 l 0,-77 c -125,0 -211,-106 -230,-219 -1,0 -3,0 -5,0 -107,0 -195,-112
-195,-250 0,-139 88,-251 195,-251 l 0,0 0,-48 556,0 0,48 z m -555,413 -1,-325 c
0,0 0,0 0,0 -70,0 -126,73 -126,163 0,89 56,162 126,162 0,0 1,0 1,0 z m 555,-325
0,325 c 70,0 126,-73 126,-162 0,-90 -56,-163 -126,-163 z" />
</vector>

我注意到这个文件的代码与其他工作文件的代码之间唯一不同的是,与工作文件相比,这个文件中的一些值显示为负值,而工作文件中的值都为正值


我做错了什么?

路径中的点坐标对于指定的
视口宽度
视口高度
来说太大了

路径边界框为:

x:      631
y:      632
width:  945
height: 945
但您的视口设置基本上告诉Android它是:

x:      0
y:      0
width:  24
height: 24
因此,形状将远离图标区域的边缘绘制

有很多方法可以手动修复,但最好调整CorelDraw文件,使图形位于页面的左上角。然后确保保存的SVG有一个
视图框
。svg2android将使用它来计算视口宽度和视口高度

如果你不能让CorelDraw生成一个视图框,那么在一个固定大小的页面上设计你的图标(例如100px x 100px)。然后,您应该能够通过手动添加viewBox来获得一个工作的SVG

<svg ... viewBox="0 0 100 100" ...>

注意:我在这里做一些有根据的猜测,因为我没有CorelDraw来测试

同时,这里有一个手动调整的文件版本,我认为应该可以使用(我还没有测试它):


阅读有关android:viewportWidth&
android:viewportHeight
,将其更改为例如2400
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="945"
android:viewportHeight="945">

<group android:translateX="-631" android:translateY="-632">
<path
    android:fillColor="#000000"
android:pathData="M 1382,680 c 107,0 194,112 194,251 0,138 -87,250      -194,250 -2,0 -3,0 -5,0 -17,98
-85,219 -230,219 l 0,77 c 0,28 235,1 235,45 l 0,55 -556,0 0,-55 c 0,-59 235,-11
235,-45 l 0,-77 c -125,0 -211,-106 -230,-219 -1,0 -3,0 -5,0 -107,0 -195,-112
-195,-250 0,-139 88,-251 195,-251 l 0,0 0,-48 556,0 0,48 z m -555,413 -1,-325 c
0,0 0,0 0,0 -70,0 -126,73 -126,163 0,89 56,162 126,162 0,0 1,0 1,0 z m 555,-325
0,325 c 70,0 126,-73 126,-162 0,-90 -56,-163 -126,-163 z" />
</group>
</vector>