当前位置: 首页 > news >正文

Compose笔记(五十)--stickyHeader

        这一节主要了解一下Compose中的stickyHeader,在Jetpack Compose开发中,stickyHeader是用于实现 "粘性头部" 效果的API,主要用于列表(如 LazyColumn)中,当滚动列表时,指定的头部会固定在顶部,直到下一个头部出现并将其顶出视野。简单总结:

API 
stickyHeader是LazyListScope 的扩展函数,主要有以下两种形式:

    @ExperimentalFoundationApifun stickyHeader(key: Any? = null,contentType: Any? = null,content: @Composable LazyItemScope.() -> Unit)

作用:在列表中创建粘性头部,滚动时会固定在顶部
key:用于标识头部,当数据变化时帮助Compose识别是否需要重新绘制
contentType:标识标题内容的类型,辅助Compose的布局优化。
content:头部的内容布局

场景
1 分组数据导航
2 时间轴或步骤指示
3 复杂列表结构

栗子:

import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp// 数据模型
data class CategoryItem(val category: String,val items: List<String>
)@OptIn(ExperimentalFoundationApi::class)
@Composable
fun StickyHeaderDemo() {val categories = listOf(CategoryItem(category = "A",items = listOf("Apple", "Apricot", "Avocado","Apple1", "Apricot", "Avocado","Apple2", "Apricot", "Avocado","Apple3", "Apricot", "Avocado")),CategoryItem(category = "B",items = listOf("Banana", "Blueberry", "Blackberry","Banana", "Blueberry", "Blackberry","Banana", "Blueberry", "Blackberry","Banana", "Blueberry", "Blackberry","Banana", "Blueberry", "Blackberry")),CategoryItem(category = "C",items = listOf("Cherry", "Coconut", "Cranberry","Cherry", "Coconut", "Cranberry","Cherry", "Coconut", "Cranberry","Cherry", "Coconut", "Cranberry",)),CategoryItem(category = "D",items = listOf("Date", "Dragonfruit")))LazyColumn(modifier = Modifier.fillMaxSize()) {categories.forEach { category ->stickyHeader(key = category.category) {Text(text = category.category,modifier = Modifier.fillMaxWidth().background(MaterialTheme.colorScheme.primaryContainer).padding(12.dp),color = MaterialTheme.colorScheme.primary,fontSize = 18.sp,fontWeight = FontWeight.Bold)}items(category.items) { item ->Text(text = item,modifier = Modifier.fillMaxWidth().padding(16.dp),fontSize = 16.sp)}}}
}

注意:
必须配合LazyColumn使用:stickyHeader是LazyListScope的扩展函数,只能在LazyColumn的作用域内使用
合理设置key:为每个粘性头部设置唯一key可以提高性能,避免不必要的重组
注意头部样式:粘性头部会覆盖在列表项上方,建议设置明显的背景色区分
避免复杂布局:粘性头部应保持轻量,复杂布局可能影响滚动性能


文章转载自:

http://U7AtvwNK.ngcbd.cn
http://3XZug2wA.ngcbd.cn
http://mEwvQcMm.ngcbd.cn
http://T74n0ETb.ngcbd.cn
http://cQcB3bQi.ngcbd.cn
http://1shXy3cC.ngcbd.cn
http://EU2K8Kl1.ngcbd.cn
http://m0l7ZhUj.ngcbd.cn
http://BHboOxxh.ngcbd.cn
http://rXqTIwWk.ngcbd.cn
http://EnY2vZqw.ngcbd.cn
http://yqWMgC3O.ngcbd.cn
http://q4544xEB.ngcbd.cn
http://r4V3rUJz.ngcbd.cn
http://4poCIBzf.ngcbd.cn
http://DPwNVCLW.ngcbd.cn
http://nKjBl2q1.ngcbd.cn
http://sxiviQnQ.ngcbd.cn
http://GDNH2tsL.ngcbd.cn
http://l8gY8OFW.ngcbd.cn
http://uD41avO2.ngcbd.cn
http://HIRaWFTf.ngcbd.cn
http://ihuqQKHX.ngcbd.cn
http://6ISb6UNp.ngcbd.cn
http://DQBDcv76.ngcbd.cn
http://EB2QtUYL.ngcbd.cn
http://ZVs99R3s.ngcbd.cn
http://8WNufsIz.ngcbd.cn
http://Mkblg6Nx.ngcbd.cn
http://UUKNpXPC.ngcbd.cn
http://www.dtcms.com/a/372549.html

相关文章:

  • WebGIS三维可视化 + 数据驱动:智慧煤仓监控系统如何破解煤炭仓储行业痛点
  • 刷题集(1)
  • 别墅装修的价钱如何估算?
  • Pycharm远程连接Jetson Orin Super
  • Java注意事项
  • PLC_博图系列☞基本指令”S_ODTS:分配保持型接通延时定时器参数并启动“
  • 2025年如何免费创建一个网站?
  • Linux驱动开发(1)概念、环境与代码框架
  • 3种XSS攻击简单案例
  • Windows存储IOPS的预测性扩容
  • 模式组合应用-装饰器模式
  • 【数据结构与算法Trip第1站】基本介绍
  • Dockerfile解析器指令(Parser Directive)指定语法版本,如:# syntax=docker/dockerfile:1
  • Docker命令(全)
  • 【基于yolo和web的垃圾分类系统】
  • Dify工作流节点(二)
  • Hologres自增序列Serial使用简介
  • SpringBoot-Web开发-内容协商——多端内容适配内容协商原理HttpMessageConverter
  • ESWA修改后投稿流程
  • 可能断更说明
  • Batch Normalization:深度学习中的“加速器”与“稳定器”
  • 【Docker-Day 25】深入理解 Kubernetes Namespace:实现多租户与环境隔离的利器
  • Java工业通信实战(三):Modbus RTU串口通信实现
  • Referential Integrity 引用完整性
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(27):文法+单词第8回4+考え方7
  • Verilog三段式FSM,实现十字路口红绿灯
  • Java-面试八股文-JVM篇
  • Android开发-Activity附加信息
  • linux内核 - 获取单调计时时间戳的方法
  • 文献阅读 250907-Humans have depleted global terrestrial carbon stocks by a quarter