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)
                )
            }
        }
    }

}
相关推荐
消失的旧时光-19431 小时前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed
有位神秘人1 小时前
kotlin与Java中的单例模式总结
java·单例模式·kotlin
Jinkxs1 小时前
Gradle - 与Groovy/Kotlin DSL对比 构建脚本语言选择指南
android·开发语言·kotlin
&有梦想的咸鱼&1 小时前
Kotlin委托机制的底层实现深度解析(74)
android·开发语言·kotlin
golang学习记2 小时前
IntelliJ IDEA 2025.3 重磅发布:K2 模式全面接管 Kotlin —— 告别 K1,性能飙升 40%!
java·kotlin·intellij-idea
LDORntKQH2 小时前
基于深度强化学习的混合动力汽车能量管理策略 1.利用DQN算法控制电池和发动机发电机组的功率分配 2
android
冬奇Lab2 小时前
Android 15 ServiceManager与Binder服务注册深度解析
android·源码·源码阅读
2501_916008894 小时前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
独行soc5 小时前
2026年渗透测试面试题总结-20(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
常利兵5 小时前
2026年,Android开发已死?不,它正迎来黄金时代!
android