小编Ric*_*per的帖子

Jetpack compose 中的状态栏中未显示莫代尔底片稀松布颜色

将视图系统中的应用程序迁移到 Jetpack compose。

底部稀松布颜色显示在当前应用程序的状态栏上。
如何在 Jetpack compose 中重现相同的内容?

使用视图的应用程序的屏幕截图

使用撰写的应用程序的屏幕截图

编写代码

val modalBottomSheetState = rememberModalBottomSheetState(
    initialValue = ModalBottomSheetValue.Hidden,
)
val coroutineScope = rememberCoroutineScope()

ModalBottomSheetLayout(
    sheetState = modalBottomSheetState,
    sheetContent = {
        // Not relevant
    },
) {
    Scaffold(
        scaffoldState = scaffoldState,
        topBar = {
            // Not relevant
        },
        floatingActionButton = {
            FloatingActionButton(
                onClick = {
                    coroutineScope.launch {
                        if (!modalBottomSheetState.isAnimationRunning) {
                            if (modalBottomSheetState.isVisible) {
                                modalBottomSheetState.hide()
                            } else {
                                modalBottomSheetState.show()
                            }
                        }
                    }
                },
            ) {
                Icon(
                    imageVector = Icons.Rounded.Add,
                    contentDescription …
Run Code Online (Sandbox Code Playgroud)

android bottom-sheet android-jetpack-compose

15
推荐指数
1
解决办法
5264
查看次数

如何检索 LazyRow 的滚动方向

对于LazyRow, 或Column,如何知道用户是否向左或向右滚动(或向上或......你知道)。对于类似的东西,我们不需要在 compose 中回调,因为mutableStateOf对象总是会触发重组,所以我只是想知道一种将其存储在变量中的方法。好的,有lazyRowState.firstVisibleItemScrollOffset,它可以用来以某种方式测量它,但我找不到一种方法来首先存储它的值,然后减去当前值来检索方向(基于正或负变化)。关于如何做到这一点的任何想法,谢谢

android android-jetpack-compose android-jetpack-compose-list

13
推荐指数
1
解决办法
6051
查看次数

Studio BumbleBee 撰写预览的“渲染问题”

我无法在 Studio 中预览任何内容,无法预览像Text. 我收到“渲染错误”,显示了该堆栈跟踪。

java.lang.NoSuchMethodException: com.<packageName>.Navigation_ComponentsKt.<PreviewName>
    at androidx.compose.ui.tooling.CommonPreviewUtils.findComposableMethod(CommonPreviewUtils.kt:78)
    at androidx.compose.ui.tooling.CommonPreviewUtils.invokeComposableViaReflection$ui_tooling_release(CommonPreviewUtils.kt:183)
    at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1$composable$1.invoke(ComposeViewAdapter.kt:553)
    at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1$composable$1.invoke(ComposeViewAdapter.kt:551)
    at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1.invoke(ComposeViewAdapter.kt:590)
    at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1.invoke(ComposeViewAdapter.kt:546)
    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:215)
    at androidx.compose.ui.tooling.InspectableKt.Inspectable(Inspectable.kt:64)
    at androidx.compose.ui.tooling.ComposeViewAdapter$WrapPreview$1.invoke(ComposeViewAdapter.kt:495)
    at androidx.compose.ui.tooling.ComposeViewAdapter$WrapPreview$1.invoke(ComposeViewAdapter.kt:494)
    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:215)
    at androidx.compose.ui.tooling.ComposeViewAdapter.WrapPreview(ComposeViewAdapter.kt:490)
    at androidx.compose.ui.tooling.ComposeViewAdapter.access$WrapPreview(ComposeViewAdapter.kt:120)
    at androidx.compose.ui.tooling.ComposeViewAdapter$init$3.invoke(ComposeViewAdapter.kt:546)
    at androidx.compose.ui.tooling.ComposeViewAdapter$init$3.invoke(ComposeViewAdapter.kt:543)
    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:384)
    at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:228)
    at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:227)
    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:215)
    at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:148)
    at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:114)
    at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:113)
    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:215)
    at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(AndroidCompositionLocals.android.kt:106)
    at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(Wrapper.android.kt:162)
    at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(Wrapper.android.kt:161) …
Run Code Online (Sandbox Code Playgroud)

android-studio android-gradle-plugin android-jetpack-compose android-jetpack-compose-preview

11
推荐指数
1
解决办法
9481
查看次数

无法在约束中表示 214748364 的大小

我刚刚创建了一个简单的 Composable 并希望使用 a 来渲染它Layout,但是在实现解决方案时,我在测量阶段偶然发现了这个错误。

java.lang.IllegalArgumentException: Can't represent a size of 214748364 in Constraints
        at androidx.compose.ui.unit.Constraints$Companion.bitsNeedForSize(Constraints.kt:408)
        at androidx.compose.ui.unit.Constraints$Companion.createConstraints-Zbe2FdA$ui_unit_release(Constraints.kt:368)
        at androidx.compose.ui.unit.ConstraintsKt.Constraints(Constraints.kt:438)
        at androidx.compose.ui.unit.ConstraintsKt.Constraints$default(Constraints.kt:423)
        at com.gmarsk.aiare.MainActivity$InstructionsScreen$DisplayCard$1.measure-3p2s80s(MainActivity.kt:514)
        at androidx.compose.ui.node.InnerPlaceable.measure-BRTryo0(InnerPlaceable.kt:54)
Run Code Online (Sandbox Code Playgroud)

这是我尝试这个的时候

val sampleComposable = measurables[1].measure(
                Constraints(
                    minHeight = constraints.maxHeight * 7 / 10,
                )
            )
Run Code Online (Sandbox Code Playgroud)

有人以前偶然发现过这个吗?如果不是错误,有什么解决方案,请告诉我。

现在,我认为这里的问题是我嵌套了两个Layout可组合项,

Layout(
content = {
 Dummy1()
 Dummy2()
 NestedLayoutComposable() // It contains a Layout Composable itself
}{ measurables, constraints ->
 val nlc = measurables[2].measure(
  Constraints(
   minHeight = constraints.maxHeight * 7/10
  )
 )
 layout(constraints.maxWidth, constraints.maxHeight){
  nls.place(0, …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-jetpack-compose-layout

10
推荐指数
1
解决办法
6595
查看次数

我可以在可组合项中剪出路径吗

我们可以Path使用此处绘制 s Canvas,但我想知道是否可以绘制一个不规则的闭合环,然后将背景应用到环的内部。例如,可以只有一个框,填充到屏幕上,具有白色背景,然后我绘制一个形状(本质上是一个循环)。现在我怎样才能仅将红色背景应用于循环捕获的区域?可组合项本质上似乎是直的,所以这似乎是不可能的。

layout android canvas clip android-jetpack-compose

3
推荐指数
1
解决办法
2377
查看次数

将两个惰性滚动条一起滚动

这个问题以前已经被问过,但以不同的形式,关于一些特定的用例,到目前为止还没有答案。我终于让它工作了,所以我在这里分享这个,但是这不应该被标记为重复,因为前面的所有问题都指定了特定的东西,比如Columnswith scrollable Modifiers, or LazyRows,但这将解决一般的所有问题,我的意思是所有惰性滚动器,甚至希望甚至是可滚动的容器。我将发布答案,这只是我希望与社区分享的一段知识,当然,欢迎任何改进。

android state android-jetpack-compose android-jetpack-compose-list android-jetpack-compose-modifier

2
推荐指数
1
解决办法
2423
查看次数

如何将具有固定值的路径缩放为动态可组合大小?

我有一个简单的Box可组合项,我想将其剪辑为自定义形状,但每当我尝试它时,形状的大小仍然非常僵硬且很小。我尝试使用在路径级别上进行缩放Matrix(),但无济于事。这是示例 -

const val clockHand = "M0 80.52L2 86l2-5.48V2.74C4 1.83 3.6 0 2 0S0 1.83 0 2.74v77.78Z"
val clockHandShape = object : Shape {
    override fun createOutline(
        size: Size,
        layoutDirection: LayoutDirection,
        density: Density
    ): Outline {
        return Outline.Generic(PathParser.createPathFromPathData(clockHand).asComposePath())
    }
}

Box(
                        modifier = Modifier
                            .background(Color.Green)
                            .clip(clockHandShape)
                            .width(30.dp)
                            .height(50.dp)
                            .background(Color(0xFFFF007A))
                            .layoutId("hourHand")
) {}
Run Code Online (Sandbox Code Playgroud)

作为一种控件,您可以用预定义的形状替换自定义形状,例如RectangleShapeCircleShape

android android-jetpack-compose

2
推荐指数
1
解决办法
344
查看次数

如何知道像 TextField 这样的可组合项何时获得焦点?

我想在我的TextField焦点增益上触发一个功能,但我找不到类似监听器的东西。

android android-jetpack-compose android-compose-textfield

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