android - 在 Jetpack Compose 中使用 xml drawable 时出现 XmlPullParserException
问题描述
我想尝试通过 compose 重新使用我的旧形状可绘制文件。这是我的 shape.xml 代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#584BDD"
android:endColor="#B755FF"
android:angle="90"/>
</shape>
这是我的可组合代码:
@Composable
fun SplashScreen() {
Box(
modifier = Modifier
.fillMaxSize()
) {
Image(
imageVector = ImageVector.vectorResource(id = R.drawable.sp_rectangle_gradient_blue_purple),
contentDescription = "Background"
)
}
}
我想使用形状 xml 作为框的背景图像。但我总是得到 XmlPullParser 异常。我正在使用最新的1.0.0-beta07
. 这是完整的日志:
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:502)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #3<VectorGraphic> tag requires viewportWidth > 0
at androidx.compose.ui.graphics.vector.compat.XmlVectorParser_androidKt.createVectorImageBuilder(XmlVectorParser.android.kt:170)
at androidx.compose.ui.res.VectorResources_androidKt.loadVectorResourceInner(VectorResources.android.kt:73)
at androidx.compose.ui.res.VectorResources_androidKt.vectorResource(VectorResources.android.kt:59)
at androidx.compose.ui.res.VectorResources_androidKt.vectorResource(VectorResources.android.kt:49)
at com.wiryadev.adsadvancecompose.MainActivityKt.SplashScreen(MainActivity.kt:45)
at com.wiryadev.adsadvancecompose.ComposableSingletons$MainActivityKt$lambda-1$1.invoke(MainActivity.kt:31)
at com.wiryadev.adsadvancecompose.ComposableSingletons$MainActivityKt$lambda-1$1.invoke(MainActivity.kt:30)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.material.SurfaceKt$Surface$1.invoke(Surface.kt:119)
at androidx.compose.material.SurfaceKt$Surface$1.invoke(Surface.kt:108)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:193)
at androidx.compose.material.SurfaceKt.Surface-F-jzlyU(Surface.kt:105)
at com.wiryadev.adsadvancecompose.ComposableSingletons$MainActivityKt$lambda-2$1.invoke(MainActivity.kt:30)
at com.wiryadev.adsadvancecompose.ComposableSingletons$MainActivityKt$lambda-2$1.invoke(MainActivity.kt:28)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:193)
at androidx.compose.material.TextKt.ProvideTextStyle(Text.kt:246)
at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:81)
at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:80)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:193)
at androidx.compose.material.MaterialThemeKt.MaterialTheme(MaterialTheme.kt:72)
at com.wiryadev.adsadvancecompose.ui.theme.ThemeKt.ADSAdvanceComposeTheme(Theme.kt:41)
at com.wiryadev.adsadvancecompose.ComposableSingletons$MainActivityKt$lambda-3$1.invoke(MainActivity.kt:28)
at com.wiryadev.adsadvancecompose.ComposableSingletons$MainActivityKt$lambda-3$1.invoke(MainActivity.kt:27)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:346)
at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:202)
at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:201)
我知道我们可以在撰写中使用画笔制作渐变。但我只想知道是否可以使用旧的可绘制文件。提前致谢。
解决方案
推荐阅读
- python - 在 matplotlib 中添加具有不同刻度的附加轴
- mysql - 无法将外键约束添加到先前创建的子表
- ios - 检索屏幕区域的城市名称 [Mapbox]
- amazon-web-services - 接收错误“调用 GetAuthorizationToken 操作时发生错误 (AccessDeniedException)”
- excel - Excel电子表格到XML - 循环和数据问题
- r - 根据 R 中的时间戳计算行为状态的持续时间
- pandas - pandas np.where 基于多索引级别
- c++ - C++ 模拟按键
- python - Chatterbot 无法安装
- angular - Socket.io - 服务器接收消息但不将其发送给客户端?