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

Compose笔记(五十四)--Card

         这一节主要了解一下Compose中的Card,在Jetpack Compose开发中,它是Material3提供的卡片组件,用于展示相关联的内容,具有内置的阴影、圆角和边框效果,适合用于信息分组、列表项或独立内容块。它能通过视觉层次突出内容,提升界面的立体感和可读性。简单总结:

API
modifier:布局修饰符(控制大小、边距等)
shape:卡片形状
colors:卡片颜色配置设置背景色、内容色等)
elevation:卡片阴影高度
border:卡片边框
content:卡片内部内容

场景:
1 信息展示卡片,用于展示结构化信息。
2 列表项/网格项,在LazyColumn或LazyVerticalGrid中作为列表项使用,使每个条目具有独立的视觉容器。
3 可交互选项卡,作为可点击/选择的选项载体,通过状态变化反馈用户操作。

栗子:

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Check
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp@Composable
fun CardDemo01() {var isSelected by remember { mutableStateOf(false) }Card(modifier = Modifier.fillMaxWidth().padding(16.dp),shape = MaterialTheme.shapes.small, colors = CardDefaults.cardColors(containerColor = if (isSelected) {MaterialTheme.colorScheme.primaryContainer } else {MaterialTheme.colorScheme.surface }),elevation = if (isSelected) {CardDefaults.cardElevation(defaultElevation = 12.dp) } else {CardDefaults.cardElevation(defaultElevation = 4.dp)},onClick = { isSelected = !isSelected } ) {Column(modifier = Modifier.fillMaxWidth().padding(20.dp),horizontalAlignment = Alignment.CenterHorizontally,verticalArrangement = Arrangement.spacedBy(12.dp)) {if (isSelected) {Icon(imageVector = Icons.Default.Check,contentDescription = "已选中",tint = MaterialTheme.colorScheme.primary,modifier = Modifier.size(24.dp))}Text(text = if (isSelected) "已选择该选项" else "点击选择该选项",style = MaterialTheme.typography.titleMedium)Text(text = "这是一个可交互的卡片,点击切换选中状态",style = MaterialTheme.typography.bodySmall,color = MaterialTheme.colorScheme.onSurfaceVariant)}}
}

combinedClickable

import android.widget.Toast
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp@OptIn(ExperimentalFoundationApi::class)
@Composable
fun CardDemo02() {var clickInfo by remember { mutableStateOf("点击卡片触发事件") }var isLiked by remember { mutableStateOf(false) } val context = LocalContext.currentCard(modifier = Modifier.fillMaxWidth().padding(16.dp)//复合点击事件修饰符.combinedClickable(onClick = {clickInfo = "单击:查看卡片详情"Toast.makeText(context,clickInfo,Toast.LENGTH_SHORT).show()},onLongClick = {clickInfo = "长按:弹出操作菜单"Toast.makeText(context,clickInfo,Toast.LENGTH_SHORT).show()},onDoubleClick = {isLiked = !isLikedclickInfo = if (isLiked) "双击:已点赞 ❤️" else "双击:取消点赞"Toast.makeText(context,clickInfo,Toast.LENGTH_SHORT).show()}),elevation = CardDefaults.cardElevation(defaultElevation = 6.dp),colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface)) {Column(modifier = Modifier.fillMaxWidth().padding(20.dp),horizontalAlignment = Alignment.CenterHorizontally,verticalArrangement = Arrangement.spacedBy(16.dp)) {Text(text = "复合点击卡片",style = MaterialTheme.typography.headlineSmall)Icon(imageVector = Icons.Default.Favorite,contentDescription = "点赞",tint = if (isLiked) Color.Red else Color.Gray,modifier = Modifier.size(48.dp))Text(text = clickInfo,style = MaterialTheme.typography.bodyMedium,color = MaterialTheme.colorScheme.onSurfaceVariant,textAlign = TextAlign.Center)}}}

注意:
1 修饰符顺序,combinedClickable需放在modifier链的靠前位置,确保点击区域正确。
2 Card默认可能占据过多空间,可使用Modifier.widthIn(max = ...)防止卡片过宽。

http://www.dtcms.com/a/533218.html

相关文章:

  • 西宁电商网站制作公司北京广告设计招聘
  • 阿里巴巴网站建设销售软件商店下载最新版
  • 交流耦合和直流耦合
  • 印刷厂网站建设方案利用网上菜谱做网站
  • Flutter 中, Flame + flame_forge2d世界坐标和屏幕坐标对齐
  • 石家庄建站网页模板siteservercms做的网站在后台进行修改教程
  • 基于单片机的楼道声光人体红外智能控制灯设计
  • 做热处理工艺的网站有哪些苏州优化外包
  • 给网站怎么做tag标签网站优化公司免费咨询
  • 苏州专业做网站的公司有哪些杭州市优化服务
  • 5 Simplified LPDDR6 State Diagram(简化LPDDR6状态图)
  • 慈利做网站在哪里怎么做免费网站 视频
  • 怎么做赌钱网站网站备案现场
  • 通胀数据加强降息预期 金价周五收于4100美元之上
  • 高级机器学习作业(一)岭回归 + 信息熵 + Sigmoid + Softmax + PCA
  • 莱州网站建设关键字排名优化网络托管微信代运营wordpress 前台 插件
  • Python uv虚拟环境管理工具详解
  • 西安网站制作网站是如何设计配置方案的
  • 线程互斥量
  • 【瑞芯微】【rk3128】【03.编写音频测试程序】
  • 台湾精准医疗计划:GWAS-summary statistics完全公开可下载
  • 网站快速优化排名免费网络营销模式课
  • 【每日算法】 洛谷 P12341 【[蓝桥杯 2025 省 A/Python B 第二场] 消消乐】 2025.10.26
  • 13-Redis 事务深度解析:原子性执行与乐观锁实践指南
  • 28-Keras:探讨高层神经网络API及其快速原型设计能力
  • Chrominum CC 合成器文档学习记录
  • 建设考试网站首页外文网站建设
  • 重庆工信部网站搜狗推广登录
  • 了解网站的建设心得wordpress设置文本编辑器
  • 网站美工工作流程网站建设相关