有没有正确(有效)的方法在 LazyColumn 中使用 CustomView(带或不带 androidx.compose.ui.viewinterop.AndroidView)?

问题描述 投票:0回答:2

有什么问题吗?

现在我尝试在

LazyColumn
中使用我的自定义 Android 视图。在我看来,由于每次滚动时都会重新创建自定义视图,因此图片非常laggy。那么,除了用 Compose 实现 view 之外,还有什么办法可以让它更流畅呢?

我的代码:

LazyColumn {
    items(events){ event ->
        EventItem(event, callBack)
    }
}

@Composable
private fun EventItem(
    event: EventOverviewUiModel,
    callBack : (EventsAdapterEvent) -> Unit
) {
    AndroidView(
        modifier = Modifier.fillMaxWidth(),
        factory = { context -> EventOverviewView(context) },
        update = { view -> view.bind(event) }
    )
}
android androidx android-jetpack-compose android-jetpack
2个回答
1
投票

对于遇到同样问题的其他人:

截至目前,这个问题还没有解决方案。 Google 已知此问题,您可以在此处跟踪问题的解决方案。

如果您需要在 Compose 世界中使用

AndroidView
并平滑滚动,您有两种解决方法:

  • 您的物品数量有限:您可以使用简单的
    Column
    verticalScroll
    并在里面添加您的
    AndroidView
  • 您的项目太多:您必须实现
    RecyclerView
    并将其用作
    AndroidView
    ,而不是
    AndroidView
    中的
    LazyColumn

0
投票

现在可以解决这个问题,请参阅此处的 ScrollingAndroidViewsDemo: https://android-review.googlesource.com/c/platform/frameworks/support/+/2394474

© www.soinside.com 2019 - 2024. All rights reserved.