android compose 左右滑动带指示器,HorizontalPager和HorizontalPagerIndicator使用

android compose 左右滑动带指示器,HorizontalPager和HorizontalPagerIndicator使用

复制代码
/**
 * Author : wn
 * Email : maoning20080809@163.com
 * Date : 2026/1/5 20:58
 * Description : 左右滑动 带指示器, HorizontalPager 和 PagerIndicator
 */
class HorizontalPagerActivity : ComponentActivity(){

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
            testHorizontalPagerWidthIndicator()
        }
    }

    @OptIn(ExperimentalPagerApi::class)
    @Preview
    @Composable
    private fun testHorizontalPagerWidthIndicator(){
        //页面数量
        val pageCount = 5

        val pagerState = rememberPagerState()

        Column(modifier = Modifier.fillMaxSize(),
            horizontalAlignment = Alignment.CenterHorizontally){

            Spacer(Modifier.height(20.dp))
            Text(text = "左右滑动指示器", fontSize = 30.sp)

            Spacer(Modifier.height(20.dp))

            //水平分页器
            HorizontalPager(
                count = pageCount,
                state = pagerState,
                modifier = Modifier.padding(10.dp)
            ) { page ->
                //每个页面的内容
                Box(modifier = Modifier.width(300.dp).height(400.dp).padding(16.dp)
                    .background(
                        Color(Random.nextInt(256),
                            Random.nextInt(256),
                            Random.nextInt(256),
                            ),
                        shape = RoundedCornerShape(12.dp)
                    ), contentAlignment = Alignment.Center){
                    Text(text = "页面 ${page + 1}", style = MaterialTheme.typography.headlineMedium,
                        color = Color.White)
                }
            }

            Spacer(modifier = Modifier.height(16.dp))

            // 指示器固定在底部
            Box(
                modifier = Modifier.padding(10.dp),
                contentAlignment = Alignment.BottomCenter
            ) {
                HorizontalPagerIndicator(
                    pagerState = pagerState,
                    modifier = Modifier.padding(bottom = 32.dp),
                    activeColor = MaterialTheme.colorScheme.primary,
                    inactiveColor = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.3f)
                )
            }
        }
    }

}
相关推荐
独行soc10 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码203511 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
2501_9151063211 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
vistaup11 小时前
OKHTTP 默认构建包含 android 4.4 的TLS 1.2 以及设备时间不对兼容
android·okhttp
常利兵11 小时前
ButterKnife在Android 35 + Gradle 8.+环境下的适配困境与现代化迁移指南
android
撩得Android一次心动11 小时前
Android LiveData 全面解析:使用Java构建响应式UI【源码篇】
android·java·android jetpack·livedata
熊猫钓鱼>_>11 小时前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端
Rainman博21 小时前
WMS-窗口relayout&FinishDrawing
android
baidu_247438611 天前
Android ViewModel定时任务
android·开发语言·javascript
有位神秘人1 天前
Android中Notification的使用详解
android·java·javascript