标签: android-compose

Android Compose 未知崩溃

我遇到了奇怪的崩溃

Fatal Exception: java.lang.IllegalStateException
You must call layoutWithConstraints first

androidx.compose.foundation.text.modifiers.MultiParagraphLayoutCache.getTextLayoutResult (MultiParagraphLayoutCache.kt:118)
androidx.compose.foundation.text.modifiers.TextAnnotatedStringNode.draw (TextAnnotatedStringNode.kt:489)
androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-x_KDEd0$ui_release (LayoutNodeDrawScope.kt:105)
androidx.compose.ui.node.LayoutNodeDrawScope.draw-x_KDEd0$ui_release (LayoutNodeDrawScope.kt:86)
androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers (NodeCoordinator.kt:365)
androidx.compose.ui.node.NodeCoordinator.draw (NodeCoordinator.kt:354)
androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw (LayoutModifierNodeCoordinator.kt:182)
androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers (NodeCoordinator.kt:362)
androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers (NodeCoordinator.kt:54)
androidx.compose.ui.node.NodeCoordinator$invoke$1.invoke (NodeCoordinator.kt:384)
androidx.compose.ui.node.NodeCoordinator$invoke$1.invoke (NodeCoordinator.kt:383)
androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.kt:2303)
androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe (SnapshotStateObserver.kt:473)
androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:230)
androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:133)
androidx.compose.ui.node.NodeCoordinator.invoke (NodeCoordinator.kt:383)
androidx.compose.ui.node.NodeCoordinator.invoke (NodeCoordinator.kt:54)
androidx.compose.ui.platform.RenderNodeApi29.record (RenderNodeApi29.android.kt:209)
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (RenderNodeLayer.android.kt:304)
androidx.compose.ui.platform.AndroidComposeView.dispatchDraw (AndroidComposeView.android.kt:1167)
android.view.View.draw (View.java:22957)
android.view.View.updateDisplayListIfDirty (View.java:21789)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4606)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4579)
android.view.View.updateDisplayListIfDirty (View.java:21740)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4606)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4579)
android.view.View.updateDisplayListIfDirty (View.java:21740)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4606)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4579)
android.view.View.updateDisplayListIfDirty (View.java:21740)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4606)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4579)
android.view.View.updateDisplayListIfDirty (View.java:21740)
android.view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:561)
android.view.ThreadedRenderer.updateRootDisplayList …
Run Code Online (Sandbox Code Playgroud)

crash android android-compose

7
推荐指数
1
解决办法
541
查看次数

Android - 在 Compose with Material 3 中创建自定义颜色

我第一次探索 Compose + Material 3,在尝试实现自定义颜色时遇到了很大的困难。

\n

我的意思是根据 Compose 之前的工作方式执行以下操作:

\n

我有我的自定义属性attrs.xml

\n
<?xml version="1.0" encoding="UTF-8"?>\n<resources>\n    <declare-styleable name="CustomStyle">\n        <attr name="myCustomColor"\n            format="reference|color"/>\n    </declare-styleable>\n</resources>\n
Run Code Online (Sandbox Code Playgroud)\n

并且该自定义属性可以在我的光明和黑暗中使用styles.xml

\n
<?xml version="1.0" encoding="utf-8"?>\n<resources xmlns:tools="http://schemas.android.com/tools">\n    <style name="AppTheme" parent="Theme.Material3.DayNight.NoActionBar">\n        <item name="myCustomColor">@color/white</item> <!-- @color/black in the dark style config -->\n    </style>\n</resources>\n
Run Code Online (Sandbox Code Playgroud)\n

然后我可以在任何我想要的地方使用它,无论是在代码中还是在布局中:

\n
<com.google.android.material.imageview.ShapeableImageView\n    android:layout_width="24dp"\n    android:layout_height="24dp"\n    android:background="?myCustomColor"\n
Run Code Online (Sandbox Code Playgroud)\n

这非常简单实用,因为它会自动解析浅色和深色,而我所需要的只是使用自定义颜色参考。

\n

但在 Compose with Material 3 中我找不到任何地方解释如何完成这样的事情。

\n

在材质 2 中,可以执行以下操作:

\n
val Colors.myExtraColor: Color\n    get() = if (isLight) Color.Red else Color.Green\n
Run Code Online (Sandbox Code Playgroud)\n

但在材料 3 中这不再可能:

\n …

android material-design android-compose

6
推荐指数
1
解决办法
1615
查看次数

标签 统计

android ×2

android-compose ×2

crash ×1

material-design ×1