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

bf1o4zei  于 2022-12-25  发布在  Android
关注(0)|答案(1)|浏览(91)

"有什么问题吗"
现在我尝试在LazyColumn中使用我的自定义Android视图。在我看来,由于每次滚动时都要重新创建自定义视图,所以图片非常滞后。那么,除了使用Compose实现视图之外,还有什么方法可以让它更流畅呢?

    • 我的密码:**
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)
          }
        )
      }
s5a0g9ez

s5a0g9ez1#

对于遇到同样问题的其他人:
截至今天,这个问题还没有解决方案。这个问题已经被谷歌知道了,你可以跟踪这个问题的解决方案here
如果您需要在“合成”环境中使用AndroidView并实现平滑滚动,则有两种解决方法:

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

相关问题