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

}
相关推荐
游戏开发爱好者85 分钟前
iOS 推送怎么配置,APNs 推送证书、设备库与群发
android·ios·小程序·https·uni-app·iphone·webview
wxson728215 小时前
【Android视频监控系统技术总结】
android·音视频
hunterandroid16 小时前
[Android 从零到一] LiveData 粘性事件与单次消费:从重复触发到可靠事件总线
android
hunterandroid17 小时前
[Android 从零到一] Android 事件分发机制:从 ACTION_DOWN 到 View 事件消费链路
android
阿巴斯甜17 小时前
adb‑shell 全套命令实操总结
android
奔跑的架构师18 小时前
[A-49]ARMv9/v8-PSCI接口规范与工作流程简介
android·linux·arm开发·arm
AFinalStone18 小时前
Android 7系统国际化(七)Resources 与 AssetManager 源码剖析
android·国际化·local
Android-Flutter19 小时前
Android 内存泄漏详解
android·kotlin
catchadmin19 小时前
Fiber 与 PHP 8.6 Polling API 异步初探
android·开发语言·php