Jetpack 在 LazyCloumn 中组成 LazyColumn

Posted

技术标签:

【中文标题】Jetpack 在 LazyCloumn 中组成 LazyColumn【英文标题】:Jetpack compose LazyColumn inside LazyCloumn 【发布时间】:2022-01-20 21:00:15 【问题描述】:

在我的主页中,我有一个惰性列,其中一项是水平寻呼机。在每个水平寻呼机中都有一些页面,我也需要在其中包含lazyColumn。错误是您不允许在同一方向使用嵌套滚动。我应该如何实现这个 ui?

@Composable
fun Home() 
    LazyColumn 
        item  
        item  
        item  

        item 
            TabRow(selectedTabIndex =) 

            
        
        item 
            HorizontalPager(count =)  page ->
                
                when 
                    page == 0 -> 
                        LazyColumn 
                            items(list) 
                                
                            
                        
                        
                    
                
            
        
    

【问题讨论】:

【参考方案1】:

我创建了一个示例。对我来说,它按预期工作。请看一下

class ComposeActivity8 : ComponentActivity() 

    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContent 
            ComposeTutorialTheme 
                Home()
            
        
    

    @Composable
    fun VItem(text: String) 
        Text(modifier = Modifier.padding(40.dp), text = text)
        Divider(color = Color.Black)
    

    @Composable
    fun HItem(content: @Composable BoxScope.() -> Unit) 
        Box 
            content()
            Divider(
                color = Color.Red, modifier = Modifier
                    .align(Alignment.CenterEnd)
                    .fillMaxHeight()
                    .width(1.dp)
            )
        
    

    @Composable
    fun CreateLazyColumn(pos: String, countItem: Int) 
        LazyColumn 
            items(count = countItem, itemContent =  index ->
                VItem("$pos.$index")
            )
        
    

    @Composable
    fun Home() 
        LazyColumn 
            item  VItem("Vertical item 1") 
            item  VItem("Vertical item 2") 
            item  VItem("Vertical item 3") 
            item  VItem("Vertical item 4") 
            item 
                LazyRow(modifier = Modifier.height(150.dp)) 
                    item 
                        HItem 
                            CreateLazyColumn("Horizontal item 5.1", 6)
                        
                    
                    item 
                        HItem 
                            CreateLazyColumn("Horizontal item 5.2", 10)
                        
                    
                    item 
                        HItem 
                            Text(
                                modifier = Modifier.padding(40.dp),
                                text = "Horizontal item 5.3"
                            )
                        
                    
                    item 
                        HItem 
                            Text(
                                modifier = Modifier.padding(40.dp),
                                text = "Horizontal item 5.4"
                            )
                        
                    
                    item 
                        HItem 
                            CreateLazyColumn("Horizontal 5.5", 6)
                        
                    
                    item 
                        HItem 
                            Text(
                                modifier = Modifier.padding(40.dp),
                                text = "Horizontal item 5.6"
                            )
                        
                    
                    item 
                        HItem 
                            Text(
                                modifier = Modifier.padding(40.dp),
                                text = "Horizontal item 5.7"
                            )
                        
                    
                    item 
                        HItem 
                            Text(
                                modifier = Modifier.padding(40.dp),
                                text = "Horizontal item 5.8"
                            )
                        
                    
                
                Divider(color = Color.Black)
            
            item  VItem("Vertical item 6") 
            item  VItem("Vertical item 7") 
            item  VItem("Vertical item 8") 
            item  VItem("Vertical item 9") 
            item  VItem("Vertical item 10") 
            item  VItem("Vertical item 11") 
            item  VItem("Vertical item 12") 
        
    

视频

【讨论】:

以上是关于Jetpack 在 LazyCloumn 中组成 LazyColumn的主要内容,如果未能解决你的问题,请参考以下文章

JetpackJetpack 简介 ( 官方架构设计标准 | Jetpack 组成套件 | Jetpack架构 | Jetpack 的存在意义 | AndroidX 与 Jetpack 的关系 )

Jetpack 中的地图组成

Jetpack 组成没有片段的导航架构?

相对于jetpack中的其他元素创建垂直链组成ConstraintLayout?

Android Jetpack 介绍

Android Jetpack学习之旅--> 开始使用 Jetpack