Card(elevation = 4.dp) { // }
}
}

上面的代码中,我们通过Modifier类调用的方式,去调用不同的修饰符函数。

  • clickable 使可组合项响应用户输入,并显示涟漪。
  • padding 在元素周围留出空间。
  • fillMaxWidth 使可组合项填充其父项为它提供的最大宽度。
  • size() 指定元素的首选宽度和高度

注意:修饰符的函数调用顺序非常重要。由于每个函数都会对上一个函数返回的 Modifier 进行更改,因此顺序会影响最终结果。比如上面是对Column整体控件都可以点击,但如果我们把,padding跟clickable的修饰符的顺序换一下。那么Column的点击范围就需要扣除padding的部分。

@Composable
fun ArtistCard(//) {
val padding = 16.dp
Column(
modifier = Modifier
.clickable(onClick = onClick)
.padding(padding)
.fillMaxWidth()
) {
// rest of the implementation
}
}

二:常用的Modifier的函数方法介绍

Modifier涉及到的方法很多,我们可以从官网的地址去查看Modifier方法,下面我们会进可能的去涉及解释到常用方法的使用。

@Composable
fun PaddedComposable() {
Box(modifier = Modifier.size(300.dp,300.dp).background(Color.Blue)){}
}

@Composable
fun PaddedComposable() {
Text(“Hello World”, modifier = Modifier.padding(20.dp))
}

@Preview()
@Composable
fun paddingTest(){
Column(modifier = Modifier.size(200.dp).background(Color.Gray).padding(20.dp)) {
Box(modifier = Modifier.size(30.dp).background(Color.Red).padding(top = 4.dp)) {}
Box(modifier = Modifier.size(30.dp).padding(start = 4.dp,top = 4.dp).background(Color.Green)) {}
Box(modifier = Modifier.size(30.dp).padding(vertical = 4.dp).background(Color.Red)) {}
Box(modifier = Modifier.size(30.dp).padding(horizontal = 4.dp).background(Color.Green)) {}
}
}

@Preview()
@Composable
fun modiferTest(){
Box(modifier = Modifier.size(300.dp,300.dp){}
}

@Composable
fun FixedSizeComposable() {
Box(Modifier.size(90.dp, 150.dp).background(Color.Green)) {
Box(Modifier.requiredSize(100.dp, 100.dp).background(Color.Red))
}
}

  • fillMaxHeight 填充父项为它提供的最大的高度
  • fillMaxWidth 填充父项为它提供的最大的宽度
  • fillMaxSize 填充父项的宽高
  • width 宽度

@Preview()
@Composable
fun modiferTest(){
Box(modifier = Modifier.size(300.dp,300.dp).background(Color.Blue)){
Box(modifier = Modifier.fillMaxHeight().fillMaxWidth().background(Color.Green))
Box(modifier = Modifier.fillMaxWidth().height(50.dp).background(Color.Red))
Box(modifier = Modifier.width(50.dp).fillMaxHeight().background(Color.Black))
Box(modifier = Modifier.fillMaxSize().background(Color.Gray))
}
}

  • wrapContentSize 根据子级元素的宽高来确定自身的宽度和高度,如果自身设置了最小宽高的话则会被忽略。当unbounded参数为true的时候,自身设置了最大宽度的话也会被忽略
  • wrapContentWidth 根据子级元素的宽度来确定自身的宽度,如果自身设置了最小宽度的话则会被忽略。当unbounded参数为true的时候,自身设置了最大宽度的话也会被忽略

@Preview()
@Composable
fun modiferTest(){
Column(modifier = Modifier.wrapContentSize().background(Color.Blue).padding(10.dp){
Box(modifier = Modifier.size(30.dp, 30.dp).background(Color.Red)) {}
Box(modifier = Modifier.padding(top = 4.dp).wrapContentWidth().height(60.dp).background(Color.Green).padding(60.dp))
Box(modifier = Modifier.padding(top = 4.dp).width(60.dp).wrapContentHeight().background(Color.Gray).padding(30.dp)){}
}
}

  • preferredWidth 设置初始宽度
  • preferredHeight 设置初始高度

@Preview()
@Composable
fun preferredTest(){
Column(modifier = Modifier
.size(150.dp)
.background(Color.Red)){
Box(modifier = Modifier.preferredSize(40.dp).background(Color.Green))
Box(modifier = Modifier.padding(top = 4.dp).preferredSize(40.dp,20.dp).background(Color.Green))
Box(modifier = Modifier.padding(top = 4.dp).preferredWidth(40.dp).height(20.dp).background(Color.Green))
Box(modifier = Modifier.padding(top = 4.dp).width(20.dp).preferredHeight(40.dp).background(Color.Green))
}
}

  • widthIn(最小宽度,最大宽度) 设置自身的最小,最大宽度
  • heightIn(最小高度,最大高度) 设置自身的最小,最大高度

@Preview()
@Composable
fun preferredTest(){
Column(modifier = Modifier
.size(300.dp)
.background(Color.Red)){
Text(text = “测试测试测试”, modifier = Modifier.sizeIn(40.dp,40.dp,100.dp,100.dp))
Text(text = “测试测试,测试测试,测试测试”, modifier = Modifier.sizeIn(40.dp,40.dp,100.dp,100.dp))
Text(text = “测试”, modifier = Modifier.widthIn(20.dp,100.dp))
Text(text = “测试,测试,测试”, modifier = Modifier.widthIn(20.dp,100.dp))
Text(text = “测试”, modifier = Modifier.heightIn(20.dp,100.dp))
Text(text = “测试,测试,测试,测试,测试,测试,测试,测试,测试,测试,测试”, modifier = Modifier.heightIn(20.dp,100.dp))
}
}

  • preferredWidthIn(最小宽度,最大宽度) 设置初始最小和最大宽度
  • preferredHeightIn(最小高度,最大高度) 设置初始最小和最大高度

@Preview()
@Composable
fun preferredTest(){
Column(modifier = Modifier
.size(300.dp)
.background(Color.Red)){
Text(text = “测试测试”, modifier = Modifier.preferredSizeIn(40.dp,40.dp,100.dp,100.dp))
Text(text = “测试测试,测试测试,测试测试”, modifier = Modifier.preferredSizeIn(40.dp,40.dp,100.dp,100.dp))
Text(text = “测试”, modifier = Modifier.preferredWidthIn(20.dp,100.dp))
Text(text = “测试,测试,测试”, modifier = Modifier.preferredWidthIn(20.dp,100.dp))
Text(text = “测试”, modifier = Modifier.preferredHeightIn(20.dp,100.dp))
Text(text = “测试,测试,测试,测试,测试,测试,测试,测试,测试,测试,测试,测试”, modifier = Modifier.preferredHeightIn(20.dp,100.dp))
}
}

@Composable
fun MatchParentSizeComposable() {
Box {
Spacer(Modifier.matchParentSize().background(Color.Green))
Text(“Hello World”)
}
}

@Preview()
@Composable
fun paddingFromBaseLineTest(){
Box(Modifier.background(Color.Yellow)) {
Text(text = “Hi there”,Modifier.paddingFromBaseline(top = 40.dp,bottom = 20.dp))
}
}

  • offset(x,y) 设置偏移量. x是相对于x轴上的偏移,y是相对于y轴上的偏移。
  • absoluteOffset(x,y)设置偏移量

@Preview()
@Composable
fun offsetTest(){
Column(Modifier.background(Color.Yellow).size(width = 150.dp, height = 70.dp)) {
Text(text = “Hi here”,Modifier.offset(x=10.dp,y = 20.dp))
Text(text = “Hi here two”,Modifier.absoluteOffset(x=10.dp,y = 20.dp))
}
}

总结

其实要轻松掌握很简单,要点就两个:

  1. 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
  2. 多练。 (视频优势是互动感强,容易集中注意力)

你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

以上就是总结的关于在面试的一些总结,希望对大家能有些帮助,除了这些面试中需要注意的问题,当然最重要的就是刷题了,这里放上我之前整理的一份超全的面试专题PDF,大家有兴趣的可以自行领取或者私信我:

还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

【Android核心高级技术PDF文档,BAT大厂面试真题解析】点击:Android架构视频+BAT面试专题PDF+学习笔记即可获取!查看免费领取方式!

E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)即可获取!查看免费领取方式!**

[外链图片转存中…(img-yMUIH4pY-1645107207642)]

这里只是整理出来的部分面试题,后续会持续更新,希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢在关注一下~

Jetpack Compose Modifier用法详解,如何保证高可用相关推荐

  1. 一文详解 Prometheus 的高可用方案:Thanos

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 背景 在高可用 prometheus:问题集锦文章中有简单提到 Prome ...

  2. 详解Nacos的高可用特性(转载)

    前言 服务注册发现是一个经久不衰的话题,Dubbo 早期开源时默认的注册中心 Zookeeper 最早进入人们的视线,并且在很长一段时间里,人们将注册中心和 Zookeeper 划上了等号,可能 Zo ...

  3. SVN switch 用法详解 (ZZ)

    SVN switch 用法详解 (ZZ)  http://www.cnblogs.com/dabaopku/archive/2011/05/21/2052820.html 确实,以前不会用switch ...

  4. Class.forName()用法详解

    Class.forName()用法详解 标签: classjvmjdbc数据库documentationjava 2012-03-29 09:39 40414人阅读 评论(8) 收藏 举报  分类: ...

  5. STL 中map的用法详解

    STL 中map的用法详解 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可 ...

  6. STL中map和string, vector 用法详解

    1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...

  7. idea2019配置gradle详解_Constraint Layout 2.0 用法详解

    Constraint Layout 是最受欢迎的 Jetpack 库之一,它的 2.0 正式版本也发布啦 (目前最新版本 2.1.0-alpha1)!也许您已熟悉了 Constraint Layout ...

  8. sizeof,strlen用法详解

    sizeof 前向声明: sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着"辛苦我一个,幸福千万人"的伟大思想,我决定将其尽可能详细的总结一下. 但 ...

  9. 计算机曝光模式有哪些,摄影:单反相机中P、A、S、M四种曝光模式的用法详解 -电脑资料...

    这篇教程是向脚本之家的朋友介绍单反相机中P.A.S.M四种曝光模式的用法,对于摄影爱好者非常值得学习,推荐到脚本之家,喜欢的朋友一起来看看吧 很多朋友在初接触单反相机时对相机的P.A.S.M四种曝光模 ...

  10. CreateThread用法详解

    CreateThread用法详解 今天我给大家讲一讲C++中的多线程编程技术,C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面 ...

最新文章

  1. 利用CSDN将图片自动存入AI Studio :pic2bml
  2. vim 查找并手动替换(笔记)
  3. 我对软件行业及大数据的理解
  4. 危!我用python克隆了女朋友的声音!
  5. 【旅行】——出发!露营去。
  6. 计算机专业开学要带电脑吗,大学上课要带电脑吗
  7. 目标检测矩形框与polygon数据增加--裁剪,拓展,旋转
  8. 在ASP.NET Web Application 中如何处理图片 【转】-有用
  9. python中用来回溯异常的模块_Python_10-异常处理
  10. spss文件 服务器登录,spss连接远程服务器
  11. 通过这本拼图学习Bash
  12. mysql常用的备份命令有哪些_MySQL常用备份还原命令
  13. html当前行突出显示,Pandas Dataframes to_html:突出显示表行
  14. idea安装python 插件_IntelliJ IDEA安装运行python插件方法
  15. flash cs4的新特性
  16. CSMA/CD协议最小帧长的思考
  17. H266 ISP 帧内子划分
  18. 诱人福利:猎豹移动雇游轮带全员一块儿航海
  19. 【中山大学计算机组成原理实验】单周期CPU设计与实现
  20. 道指mt4代码_MT4产品代码

热门文章

  1. 邮件服务器(邮件系统)最新反垃圾技术分享
  2. replay attacker
  3. 二维矩形件排样算法之最低水平线算法实现
  4. java 大小写_java中如何进行大小写字母转换?
  5. 射频电路学习之LC振荡电路
  6. 结构思考力-读书笔记
  7. 编译原理学习笔记4(自上而下和自下而上语法分析)
  8. 使用STAR进行RNA-seq数据比对
  9. 电力电子技术(17)——交流电力控制电路和交交变频电路
  10. 国内某厂商摄像头敏感信息泄露漏洞事件分析