谈一谈Compose的核心控件

Android开发:Jetpack Compose Button,IconButton等各种Button的讲解 colors 设置颜色 RadioButtonDefaults.colors(selectedColor, unselectedColor,disabledColor)方法有三个参数,第一个selectedColor表示选中时候的颜色,第二个参数unselectedColor表示没有选中时候的颜色,第三个disabledColor表示不可用时候的颜色。这份体系学习笔记,适应人群:**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。 阅读详情

前言

本篇文章主要讲解的Compose中的核心控件。

1.Scaffold

在Compose中提供了⼀种脚手架Scaffold的控件帮助开发者快速开发。在Scaffold中提供了很多配件, ⽐如顶部菜

单栏、侧滑菜单、 底部菜单栏等。并且除了默认的Scaffold外 ,还有 ⼀些类似的控件, ⽐如BackdropScaffold、

BottomSheetScaffold等等。

@Composable

fun Scaffold(
 modifier: Modifier = Modifier, 
scaffoldState: ScaffoldState = rememberScaffoldState(), 
topBar: () -> Unit = {}, 
 bottomBar: () -> Unit = {}, 
snackbarHost: (SnackbarHostState) -> Unit = { SnackbarHost(it) }, 
floatingActionButton: () -> Unit = {}, 
floatingActionButtonPosition: FabPosition = FabPosition.End, 
isFloatingActionButtonDocked: Boolean = false,  
drawerContent: ColumnScope.() -> Unit = null,
drawerGesturesEnabled: Boolean = true,  
drawerShape: Shape = MaterialTheme.shapes.large, 
drawerElevation: Dp = DrawerDefaults.Elevation, 
drawerBackgroundColor: Color = MaterialTheme.colors.surface, 
drawerContentColor: Color =contentColorFor(drawerBackgroundColor), 
drawerScrimColor: Color = DrawerDefaults.scrimColor, 
backgroundColor: Color = MaterialTheme.colors.background, 
contentColor: Color = contentColorFor(backgroundColor),
content: (PaddingValues) -> Unit): @Composable Unit

简单的代码如下:

@Composable
 private fun scaffold(){

val scaffoldState = rememberScaffoldState()

val scope = rememberCoroutineScope()
Scaffold(
scaffoldState = scaffoldState, 
drawerContent = { Text("Drawer content") }, 
topBar = {
 TopAppBar(

title = { Text("Simple Scaffold Screen") },  
  navigationIcon = {
IconButton(
 onClick = {

scope.launch {
scaffoldState.drawerState.open() }

}

) {
 Icon(Icons.Filled.Menu, contentDescription =
"Localized description")
}
}
)

},  floatingActionButtonPosition = FabPosition.End, 
floatingActionButton = {

ExtendedFloatingActionButton(

text = { Text("Inc") },  onClick = { /* fab click handler */ }

)

}, 
content = { innerPadding ->
LazyColumn(contentPadding = innerPadding) {
items(count = 100) {
 Box(
 Modifier

.fillMaxWidth()
.height(50.dp)
.background(colors.background)
)
}}}
)}

2.LazyColumn

@Composable fun LazyColumn(
modifier: Modifier = Modifier, 
state: LazyListState = rememberLazyListState(), 
contentPadding: PaddingValues = PaddingValues(0.dp),
 reverseLayout: Boolean = false, 
 verticalArrangement: Arrangement.Vertical = if ( !reverseLayout)
Arrangement.Top else Arrangement.Bottom, horizontalAlignment: Alignment.Horizontal = Alignment.Start, 
content: LazyListScope.() -> Unit
): Unit

@ ExperimentalMaterialApi
@Composable
fun ComposeListView() {
val context:Context = LocalContext.current
LazyColumn(){
items(ImageDatas.size){
index ->
Card(onClick = {
Toast.makeText(context, "${index}", Toast.LENGTH_SHORT).show()}, shape = RoundedCornerShape(10.dp), elevation = 10.dp,modifier = Modifier.padding(10.dp,0.dp)
) {
//⽀持图⽚加载框架的控件coil
Image(
painter =
rememberImagePainter(ImageDatas[index]), contentDescription = null, modifier = Modifier.height(220.dp).fillParentMaxWidth()
)
}
}
}
}
如何处理Java自定义控件与Compose状态的联动? 适用场景:Compose 状态变更(如其他 Compose 组件触发),需要同步刷新 Java 自定义控件的 UI(如文本、颜色、进度等)。适用场景:Java 控件的用户交互事件(如点击、滑动、输入),需要同步更新 Compose 状态,供其他 Compose 组件使用。双向联动是上述两种单向联动的结合,实现 “Compose 状态变更同步到 Java 控件,Java 控件事件也同步到 Compose 状态”,是最常用的场景(如输入框、开关控件等)。Compose 可观察状态Java 控件公开方法/监听器。 阅读详情

相关推荐

Android Compose 自定义控件开发:从基础到高阶(2026)

Jetpack Compose自定义控件开发指南 摘要:Compose采用组合式UI开发范式,自定义控件本质是可复用的Composable函数。开发分为三个层级:基础级通过组合原生组件实现通用控件(如按钮、输入框);进阶级基于Layout自定义布局或使用交互修饰符实现复杂交互;高阶级通过Canvas手动绘制特殊效果。核心原则包括:状态提升(业务状态由外部控制)、必传Modifier参数保证扩展性、合理使用remember优化性能。相比传统View体系,Compose自定义控件无需处理测量/布局回调,自动支持

fuge2008的博客 1094

Compose UI 之 Buttons 按钮 & IconButtons 图标按钮

5 中类型的Button在渲染的效果上不尽相同,因此对于它们的使用描述总结如下。Button即:它是一个基础组件,通过不同的参数和子组件来创建特定的视觉效果和行为。在需要使用通用按钮,并且希望通过自定义来实现特殊外观或行为时,开发者直接使用Button。:它通常用于突出显示主要的操作或强调一个重要的交互点。它的背景色通常与品牌的主题色或强调色相一致,以便吸引用户的注意力。当用户看到一个填充按钮时,他们通常会认为这是页面上的一个主要行动点。:它是一个带有描边的按钮,但没有填充色。

Zen@sz 博客 2147

Jetpack Compose实现MotionLayout动画开关控件

MotionLayout是Android中实现复杂动画过渡的重要组件,它通过定义约束集和过渡规则来控制UI元素的状态变化。在声明式UI框架Jetpack Compose中,MotionLayout for Compose库延续了这一设计理念,采用更符合现代UI开发范式的API实现。动画开关作为常见的交互控件,结合物理动效和手势识别技术,能够显著提升用户体验。通过分析开关控件的状态同步、手势处理和动画衔接等关键技术点,可以构建出既美观又实用的交互组件。这类技术在应用设置、主题切换等需要视觉反馈的场景中具有广泛

weixin_30444111的博客 332

Compose IconButton

可以帮助我们生成一个可点击的图标按钮IconButton是一个可点击的图标,用于表示动作(复制,粘贴,保存,等等)。IconButton的整体最小触摸目标尺寸为,以满足无障碍准则。content会在IconButton内居中。这个组件通常用于应用栏内的导航图标/动作。content通常应该是一个图标,使用中的一个图标。如果使用自定义图标,请注意内部图标的典型尺寸是。

罗小黑的博客 718

学不动了吗?Android Jetpack Compose 开发应用指南,从入门到精通,一篇就够了

Jetpack Compose 是 Google 推出的用于构建原生界面的新 Android 工具包,它可简化并加快 Android上的界面开发。Jetpack Compose 是一个声明式的UI框架,随着该框架的推出,标志着Android 开始全面拥抱声明式UI开发。 Jetpack Compose优点: 代码更加简洁直观; 应用开发效率显著提升; Kotlin API功能直观; 预览工具强大等; Jetpack Compose 一个完整的、全新的框架,学习起来确实存在一些难度;为了帮助大家更好地.

qq_44102588的博客 1579

【Jetpack Compose最新版详解】,不止是一个UI框架

Jetpack Compose是用于构建原生Android UI的现代工具包。 Jetpack Compose使用更少的代码,强大的工具和直观的Kotlin API,简化并加速了Android上的UI开发。这是Android Developers 官网对它的描述。 为什么我们需要一个新的UI 工具? 在Android中,UI工具包的历史可追溯到至少10年前。自那时以来,情况发生了很大变化,例如我们使用的设备,用户的期望,以及开发人员对他们所使用的开发工具和语言的期望。 以上只是我们需要新UI工具的一个原因,

V_15920929783的博客 5251

Compose | UI组件(五) | Button 按钮组件

Button是Compose中的一个按钮组件

让 学习 成为一种 习惯 ( 谭祖爱 & 技术博客 ) 1393

让你易上手的Jetpack Compose教程

简介 Jetpack Compose是Google最新提出的一个可以用声明式来绘制UI的框架。这个框架可以有效的提高UI的重复使用率,编程速度,以及UI的绘制效率。 现在Jetpack Compose是beta版本,API终于变得稳定了一点,我们用也可以认真地,全面地开始学习这个框架了。 这一篇我们首先学习一下Jetpack Compose的编程思想和一些名词。 编程思想及专有名词 2.1 声明式编程 大部分Android开发者都知道Jetpack Comopse是声明式UI编程。那到底什么是声明式编程呢。

zhireshini233的博客 1392

Jetpack Compose系列教程之(3)——图标(Icon) 按钮(Button)

本篇分别对常用的组件:图标(Icon) 按钮(Button) 输入框(TextField)的使用方法及各参数使用进行讲解,参考了不少文章,且费了不少时间去时间去一一实践,希望对各位带来些帮助 😊。

彩蛋在每篇文章的最后名片 2029

数字IC后端时序违例修复:setup/hold冲突与时钟树优化实战

时序收敛是数字IC后端设计中最关键的环节之一,直接影响芯片能否在目标频率下稳定工作。建立时间与保持时间的本质是寄存器对数据稳定性的物理约束,而实际工程中,setup违例和hold违例往往此消彼长,冲突的根源在于数据路径与时钟路径的延迟匹配。时钟树综合(CTS)作为连接逻辑与物理的关键步骤,其skew、insertion delay和transition的优化直接决定了时序修复的成败。通过useful skew技术、合理的单元替换和路径结构调整,可以系统性地解决setup/hold冲突,实现时序收敛。本文结合

weixin_28292761的博客 222

深度解析NXP AMCLIB状态观测器:PMSM无感FOC控制实战指南

状态观测器是现代电机控制中的核心算法,它基于电机数学模型,通过测量定子电压和电流,实时估算出转子的位置和速度,从而替代了传统的物理传感器。其原理遵循“预测-校正”的闭环结构,通过比较模型预测值与实际采样值的误差,不断修正内部状态估计。这项技术的核心价值在于实现了无传感器控制,显著降低了系统成本、提升了可靠性与紧凑性,广泛应用于伺服驱动、变频器、电动汽车和家电等领域。本文聚焦于NXP AMCLIB库中的角度跟踪观测器和反电动势观测器,深入剖析其设计思路、固定点运算实现以及参数整定方法,为工程师在永磁同步电机无

cumi7754的博客 2830

Jetpack Compose 常用控件

本文系统介绍了Jetpack Compose中的常用控件,分为基础展示控件和交互控件两大部分。基础控件包括Text(文本)、Image(图片)和Icon(图标),详细展示了样式配置、图片加载和矢量图标使用。交互控件部分重点讲解了Button(按钮)及其变体(文本按钮、图标按钮等)的实现方式,以及Checkbox等选择控件的状态绑定。所有示例均提供Kotlin代码片段和关键属性说明,帮助开发者快速掌握Compose UI开发的核心组件。

highersister的博客 870

双摄像头的实时视频拼接及目标跟踪(一)

本章主要讲图像拼接算法的研究 先膜拜一下知乎大佬全面的叙述:https://www.zhihu.com/question/34535199/answer/135169187 本文图像拼接是基于opencv的图像拼接,流程分为以下几步 ...

Y.W.jian的博客 3万+

Android Compose UI 控件

Compose组件分类与核心用法摘要 Compose组件库提供了完整的UI构建工具集,主要分为六大类:1)基础控件(文本/按钮/输入框等);2)布局控件(行列/网格/分页等);3)进度指示器;4)导航组件(底部栏/抽屉/菜单等);5)对话框组件;6)特殊功能组件(图表/表格/WebView等)。典型用法如Image组件可通过painterResource加载图片,配合Modifier设置尺寸、圆形裁切和蓝色边框。布局系统基于Row/Column实现线性排布,Lazy系列组件优化滚动性能,Material D

xingfuyisheng的专栏 723

华为海思2026届数字IC秋招笔试真题解析与实战技巧(2025最新版)

本文深度解析华为海思2026届数字IC秋招笔试真题,涵盖高频考点如后端设计、低功耗设计、SystemVerilog语法等核心内容。提供时序违例修复、时钟树综合等实战技巧,帮助考生高效备考。特别关注UPF低功耗设计规范等最新考点,助力考生在秋招笔试中脱颖而出。

lg888的博客 1090

在银河麒麟V10上部署Atlas 300i Duo:从固件到驱动的一站式踩坑笔记

日期:2025-09-09关键词:鲲鹏920、Atlas 300i Duo、银河麒麟V10、NPU、驱动、固件。

weixin_41544125的博客 2813

Compose基础控件使用

Compose基础控件使用-Text、TextField、Image、Row、Column、Card、Button

maoning20080808的专栏 622

qcc51xx如何配置spdif输入

qcc51xx如何配置spdif输入。

Alex_886的博客 1373

Android Jetpack Compose 基础控件介绍

开始学习 Jetpack Compose

Mahjong的博客 760

仿真学习系列(二):ADS仿真直观理解方波与频谱分量的关系

在高速电路设计中,我们常常听到一句话:“信号其实不是电压在传输,而是频率在传播。” 这句话看似抽象,却揭示了信号世界的核心本质——任何时域波形,都可以被拆解为一系列不同频率的正弦波。 那么,一个看似简单的方波,究竟由哪些频率成分组成?为什么在示波器上,有的方波上升沿又快又“方”,而有的却“圆润”得多?这些差异背后,隐藏的正是高频分量的力量。 本文将通过使用 Keysight ADS,从零搭建仿真电路,直观地观察方波与其谐波成分之间的关系。

案例文章,高速信号 814

车载软件架构 —— AUTOSAR Vector SIP包(三)

### 上一篇文章中介绍了AUTOSAR基础软件供应商Vector公司的开发工具链,本文将继续介绍Vector公司的AUTOSAR产品。 ### -> 1、Vector SIP包中的StartApplication ### -> 2、StartApplication如何开始使用

Soly_kun的博客 831

Android中Compose常用组件以及布局使用方法

按钮内容(可包含任意Composable):通用修饰符(设置边距、背景、点击事件等):进度值(0-1),不传则为不确定进度。:是否启用(false时变灰色):是否单行(true时禁用换行):控制层级(默认后添加的在上层):键盘配置(邮箱/数字键盘等):透明度(0.0f-1.0f):最大行数(超出显示省略号):颜色配置(背景色、文字色):提示文本(未输入时显示):浮动标签(输入时上浮):颜色滤镜(如黑白效果):字体大小(必须使用。

qq_45906596的博客 1221

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Compose 中 Text 控件对齐方式深度总结

本文总结了Compose中Text控件的对齐方式:1)内部对齐通过textAlign、lineHeight和wrapContentHeight控制文字在文本框内的位置;2)外部对齐由父容器(Box/Column/Row)的特性决定。核心区别在于点击热区和基线对齐的差异,Box(contentAlignment=Alignment.Center)是最推荐方案,提供最大点击面积且代码清晰。文章还对比了不同场景下的推荐写法和视觉效果,并附有代码示例说明。

琦琦的博客 397

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

如何使用Google Maps Compose库:Jetpack Compose地图开发终极指南

Google Maps Compose库是专为Android开发者打造的Jetpack Compose组件,它将强大的Google Maps SDK与现代声明式UI框架完美结合。本指南将带你快速掌握这个库的核心功能,从零开始构建美观、交互丰富的地图应用。 ## 🚀 为什么选择Google Maps Compose? 传统的Android地图开发需要处理复杂的XML布局和生命周期管理,而Goo

gitblog_00427的博客 936

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【亲测免费】 引领交互新潮流:Compose-SwipeBox 滑动控件全面解析

引领交互新潮流:Compose-SwipeBox 滑动控件全面解析 随着Jetpack Compose的兴起,UI开发进入了一个全新的时代。今天,我们来探索一个在Compose生态中璀璨的新星——compose-swipeBox,它以其优雅的滑动效果和高度定制性,为移动应用交互设计带来了新的灵感。 项目介绍 compose-swipeBox是一款专为Android平台打造的基于Jetpack C...

gitblog_00998的博客 616

Android Jetpack Compose 的所有核心组件(大全)

摘要:Android Jetpack Compose核心组件体系分为7大类:1.基础UI组件(Text/Image等)替代传统View控件;2.布局组件(Column/LazyColumn等)构建界面结构,其中懒加载布局优化列表性能;3.交互组件(按钮/输入框/选择器等)处理用户操作;4.容器组件(卡片/弹窗等)增强样式功能;5.导航组件实现页面跳转;6.动画组件提升交互体验;7.辅助工具(状态管理/无障碍等)。开发者应优先掌握基础组件,结合Lazy系列优化列表性能,并善用ConstraintLayout处

fuge2008的博客 879
上一篇: 程序猿的人生终于得到升华,这份面试秘诀助我一臂之力!!
下一篇: 【免费分享】这本《2023最新Android大厂高频面试题解析大全》是真宝藏~
不秃头de程序猿
博客等级 码龄5年 4089粉丝 1476原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值