首页>热点 > >正文

Jetpack Compose布局之Row/Column 环球快资讯


(资料图片仅供参考)

————————————————版权声明:本文为CSDN博主「Ping_xp」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/u013710752/article/details/121659949Jetpack Compose的布局组件。先从Column,Row,Box讲起一:竖直布局 Column1.基本使用Column() {    Text(text = "千里之行")    Text(text = "始于足下")}2.大小调整可以使用modifier来设置Column的大小:Column(modifier = Modifier    .height(200.dp)    .width(200.dp)) {    Text(text = "千里之行")    Text(text = "始于足下")}代码使用Modifier.fillMaxHeight().fillMaxWidth()来设置Column的大小,此时Column将填充父控件的剩余大小,类似于match_parent 。可以直接使用Modifier.fillMaxSize()来直接设置Column(    modifier = Modifier.fillMaxHeight().fillMaxWidth()) {    Text(text = "千里之行")    Text(text = "始于足下")}内容高度按比例分配可以使用Modifier.weight(1f)来设置内容高度的比例,Modifier.weight()只在Column和Row里面存在Column(    modifier = Modifier.fillMaxSize()) {    Text(text = "千里之行",Modifier.weight(1f))    Text(text = "始于足下",Modifier.weight(1f))}3.verticalArrangement//(horizontalArrangement参数可以设置Row垂直排列的方式:)verticalArrangement参数可以设置Column垂直排列的方式:Column(    modifier = Modifier.fillMaxHeight().fillMaxWidth(),    verticalArrangement = Arrangement.Center) {    Text(text = "千里之行")    Text(text = "始于足下")}上面的代码中Column里面的内容将垂直居中,Arrangement的值和对应效果如下:Arrangement.EqualWeight 内容撑满Column的高度,每个组件的高度平分Column的高度Arrangement.SpaceBetween 内容撑满Column的高度,最上方和最下方的组件紧靠Column,组件与组件之间的间距会平分剩余高度Arrangement.SpaceAround 内容撑满Column的高度,最上方和最下方的组件与Column的间距是组件与组件直接的间距的一半Arrangement.SpaceEvenly 内容撑满Column的高度,组件与组件之间的间距会平分剩余高度Arrangement.Top 内容对齐到Column的最上方Arrangement.Center 内容居中对齐Arrangement.Bottom 内容对齐到Column的最下方4.horizontalAlignment//(verticalAlignment参数可以设置Row的水平对齐方式:)horizontalAlignment参数可以设置Column的水平对齐方式:Column(    modifier = Modifier.fillMaxHeight().fillMaxWidth(),    verticalArrangement = Arrangement.Center,//设置垂直居中对齐    horizontalAlignment =  Alignment.CenterHorizontally//设置水平居中对齐) {    Text(text = "千里之行")    Text(text = "始于足下")}上面的代码中Column里面的内容将垂直水平都居中,horizontalAlignment的值有三种:Alignment.Start 向内容开始的方向对齐,一般为左边Alignment.CenterHorizontally 内容居中对齐Alignment.End 向内容结束的方向对齐,一般为右边5.内容单独设置排列方式   Column(        modifier = Modifier.fillMaxHeight().fillMaxWidth(),        verticalArrangement = Arrangement.Center,//设置垂直居中对齐        horizontalAlignment =  Alignment.CenterHorizontally//设置水平居中对齐    ) {        Text(text = "千里之行",Modifier.align(Alignment.Start))        Text(text = "始于足下")    }可以使用Modifier.align(Alignment.Start)来单独设置Column里面某个组件水平的对齐方式,Modifier.align()会优先horizontalAlignment指定的对齐方式。6.background背景色的设置使用的是modifier,使用Modifier.background来设置:Column(    modifier = Modifier        .fillMaxHeight()        .fillMaxWidth()        .background(Color.Red),//设置背景设置为Red    verticalArrangement = Arrangement.Center,    horizontalAlignment = Alignment.CenterHorizontally) {    Text(text = "千里之行")    Text(text = "始于足下")}7.border边框的设置同样使用的是modifier,使用Modifier._border_来设置:Column(    modifier = Modifier        .fillMaxHeight()        .fillMaxWidth()        .background(Color.Red)        //设置边框的宽度为10dp,颜色为Yellow,设置圆角为20dp        .border(10.dp, Color.Yellow, RoundedCornerShape(20.dp)),    verticalArrangement = Arrangement.Center,    horizontalAlignment = Alignment.CenterHorizontally) {    Text(text = "千里之行")    Text(text = "始于足下")}注:使用RoundedCornerShape(topStart,topEnd,bottomEnd,bottomStart)可以分别设置四个角的圆角角度;8.clickable使用Modifier.clickable()可以设置点击事件:Column(    modifier = Modifier        .width(200.dp)        .height(200.dp)        .clickable {//设置点击事件            Log.i(TAG_Column, "千里之行,始于足下")        },    verticalArrangement = Arrangement.Center,    horizontalAlignment = Alignment.CenterHorizontally) {    Text(text = "千里之行")    Text(text = "始于足下")}9.padding使用Modifier.padding()可以设置Column的内边距,Compose没有设置外边距的参数:Column(    modifier = Modifier        .width(200.dp)        .height(200.dp)        .clip(RoundedCornerShape(30.dp))        .background(Color.Yellow)        .padding(50.dp)        .clickable {            Log.i(TAG_Column, "千里之行,始于足下")        },    verticalArrangement = Arrangement.Center,    horizontalAlignment = Alignment.CenterHorizontally) {    Text(text = "千里之行")    Text(text = "始于足下")}padding可以设置所有边距,也可以设置每个位置的边距。注意:如果padding在clickable前面,那么内边距的位置是不可以点击,如果在clickable后面,那么内边距的位置也会响应点击事件,所以modifier是有顺序。10.verticalScroll使用Modifier.verticalScroll()可以使Column可以滚动:Column(    modifier = Modifier        .width(200.dp)        .height(200.dp)        .clip(RoundedCornerShape(30.dp))        .background(Color.Yellow)        .padding(50.dp)        .verticalScroll(ScrollState(0)),    verticalArrangement = Arrangement.Center,    horizontalAlignment = Alignment.CenterHorizontally) {    Text(text = "千里之行")    Text(text = "始于足下")    Text(text = "千里之行")    Text(text = "始于足下")    Text(text = "千里之行")    Text(text = "始于足下")    Text(text = "千里之行")    Text(text = "始于足下")}verticalScroll接收一个ScrollState,创建ScrollState需要设置一个initial,就是初始位置,如果设置成 100 ,那么Column初始显示的时候,会滚动到 100 的位置;Compose给我提供了一个专门用来显示可滚动Column的View:LazyColumn,可用用它来实现类似ListView和RecyclerView的功能。

标签:

相关阅读