我一直想实现类似于ViewPager 2的东西,但在composition.首先,我读到过一些地方,我不应该使用片段,只使用活动.其次,我正要做某种适配器,但我没有找到关于连接所有这些的资源.此外,我读到写pager 不是用来保存活动的,所以我有一个问题—我应该使用什么?什么可以提供类似的经验?我想有几个活动,可以改为左/右滑动.

推荐答案

Jetpack Compose旨在与单个Activity一起工作.在这个Activity中,你会显示不同的组合物.

看看HorizontalPager个组合.它提供了与ViewPager2类似的功能.您不需要在Jetpack Compose中使用适配器.

val state = rememberPagerState { 10 }  // define number of pages in PagerState
HorizontalPager(
    state = state,  // assign PagerState
    modifier = Modifier.fillMaxSize(),
) { page ->  // page is an Int that holds the index of the current page
    
    // put the Composable that you want to displayed depending on the page
    Box(
        modifier = Modifier
            .padding(10.dp)
            .background(Color.Blue)
            .fillMaxWidth()
            .aspectRatio(1f),
        contentAlignment = Alignment.Center
    ) {
        Text(text = page.toString(), fontSize = 32.sp)
    }
}

如果你想显示完全不同的可组合物作为页面,你可以在HorizontalPager主体中使用一个switchif语句,如下所示:

when (page) {
    0 -> MyComposable1()
    1 -> MyComposable2()
    2 -> MyComposable3()
    else -> { 
        DefaultComposable()
    }
}

Android相关问答推荐

触发PurchasesUpdatedListener回调时,billingClient.launchBillingFlow之前设置的成员变量丢失

Jetpack Compose:如何将文本放置在行的右侧?

从不可组合回调打开可组合屏幕

Camera2 将图像从 ImageReader 传递到 MediaRecorder

如何在我的sqlite数据库中获取某个玩家的分数

如何将DrawableId参数传递给XML布局?

如何在这段代码android jetpack compose中实现全屏滚动

是否可以按照干净的体系 struct 将活动实例传递给视图模型

如何在 Jetpack Compose 中设置行宽等于 TextField 的宽度?

无法 HEAD 'https://jcenter.bintray.com/com/facebook/react/react-native/maven-metadata.xml'

如何在 Jetpack Compose 中为中心对齐设置动画?

java.lang.IllegalArgumentException:与请求匹配的导航目的地 NavDeepLinkRequest

使用 Jetpack Compose 时,如何以简单的方式在 Color.kt 中定义 colored颜色 ?

Kotlin Compose forEach 中的负间距

Jetpack Compose Material3 - switch 标签

操作系统会终止已启动的服务并调用Service.onDestroy吗?

Android全屏AlertDialog

如何在stroke android drawable中设置渐变

如何在 flow.stateIn() 之后从流中的另一个函数发出emits ?

如何使伴奏导航 BottomSheet 完全展开?