当前位置:主页 > android教程 > Jetpack Compose布局

Jetpack Compose布局的使用详细介绍

发布:2023-03-06 11:00:01 59


为找教程的网友们整理了相关的编程文章,网友羿暖姝根据主题投稿了本篇教程内容,涉及到Jetpack、Compose布局、Jetpack、Compose、Jetpack Compose布局相关内容,已被592网友关注,相关难点技巧可以阅读下方的电子资料。

Jetpack Compose布局

一.标准布局组件

Compose中可以将多个控件元素组合使用,例如下面这样,

@Composable
fun WidgetGroup() {
    Text(text = "不为往事扰")
    Text(text = "余生只愿笑")
}

但是我们会发现,如果仅仅是这样,两个文本控件会重叠在一起,类似于下面这种样式:

如果我们想将多个控件垂直摆放在一起,可以在控件外层添加Column:组件

@Composable
fun WidgetGroup() {
    Column {
        Text(text = "不为往事扰")
        Text(text = "余生只愿笑")
    }
}

如果想要水平摆放在页面上可以使用 Row组件

@Composable
fun WidgetGroup() {
    Row {
        Text(text = "不为往事扰")
        Text(text = "余生只愿笑")
    }
}

二.修饰符

如果我们还想在文字下面添加一张图片,可以直接添加一个Image控件:

@Composable
fun WidgetGroup() {
    val image = imageResource(id = R.drawable.header)
    val imageModifier = Modifier
        .preferredHeight(180.dp)
        .fillMaxWidth()
        .clip(RoundedCornerShape(10.dp))
    Column {
        Text(text = "不为往事扰")
        Text(text = "余生只愿笑")
        Spacer(modifier = Modifier.preferredHeight(10.dp))
        Image(asset = image, modifier = imageModifier, contentScale = ContentScale.Crop)
    }
}

Spacer控件是用来填充空白的,我们还可以添加Modifier修饰符来修饰各种控件和组件。具体用法可以参考官方api,例如这里我们可以利用修饰符来添加图片的圆角。

现在我们在来优化一下这个布局,在文字的左边加一个圆形头像,来看看应该怎么添加吧:

  val imageHead=Modifier.preferredSize(50.dp)
        .clip(CircleShape)
   Column(modifier = Modifier.padding(10.dp)){
        Row (verticalAlignment = Alignment.CenterVertically){
            Image(asset = image,modifier = imageHead,contentScale = ContentScale.Crop)
            Spacer(modifier = Modifier.preferredSize(10.dp))
            Column {
                Text(text = "不为往事扰")
                Text(text = "余生只愿笑")
            }
        }
        Spacer(modifier = Modifier.preferredHeight(10.dp))
        Image(asset = image, modifier = imageModifier, contentScale = ContentScale.Crop)
    }

我们需要将这两个文本控件用Column包裹起来,然后在它的上级在用Row包裹,在Row里面添加一个Image控件,利用修饰符来对Image进行裁剪,使其变成圆形。来看看效果吧。

三.滑动组件

1.ScrollableRow和ScrollableColumn

使用 ScrollableRowScrollableColumn 可使 RowColumn 内的元素滚动。

@Composable
fun ScollableWidget() {
    ScrollableColumn(Modifier.fillMaxSize()) {
        for (i in 1..10) {
            WidgetGroup()
        }
    }
}

如果要显示的元素很少,这种方法效果很好,但对于大型数据集,很快就会出现性能问题。如需仅显示屏幕上可见的部分元素,请使用 LazyColumnForLazyRowFor

2.LazyRowFor和LazyColumnFor

RecyclerView类似,LazyColumnForLazyRowFor不会布置或呈现屏幕外的任何可组合项。使用方式也很简单,也不需要适配器,直接调用方法即可,可以设置数据,以及修饰符等等

    LazyColumnFor(items = getUsers()) {
        WidgetGroup(it.userName)
    }
    LazyRowFor(items = getUsers()) {
        WidgetGroup(it.userName)
    }

可以看一下其需要传入的参数,有数据源,修饰符,padding,以及Alignment,大部分都是用来调整页面样式的,最后一个是用来声明单个item的样式布局。当然如果我们想使用不同的item布局的话只需要在声明item样式的时候新增判断就可以了。

@Composable
fun  LazyColumnFor(
    items: List,  //用来填充列表的数据源
    modifier: Modifier = Modifier, //用来修饰列表的样式
    state: LazyListState = rememberLazyListState(),
    contentPadding: PaddingValues = PaddingValues(0.dp), //用来设置item之间的间距
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,//用来设置对齐位置
    itemContent: @Composable LazyItemScope.(T) -> Unit //用来声明item样式布局
) 

到此这篇关于Jetpack Compose布局的使用详细介绍的文章就介绍到这了,更多相关Jetpack Compose布局内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


相关文章

  • Android中分析Jetpack Compose动画内部的实现原理

    发布:2023-03-04

    这篇文章主要介绍了Android中分析Jetpack Compose动画内部的实现原理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下


  • Android开发Jetpack组件ViewModel与LiveData使用讲解

    发布:2023-03-11

    Jetpack是一个由多个技术库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者精力集中编写重要的代码


  • JetPack Compose底部导航栏的实现方法详解

    发布:2023-03-06

    开发一个新项目,底部导航栏一般是首页的标配,在以前的xml布局中,我们可以很轻松的是用谷歌提供的BottomNavigationView或者自定义来实现底部导航的功能,在Compose中也有也提供了一个类似的控件androidx.compose.material.BottomNavigation


  • Jetpack Compose 的新型架构 MVI使用详解

    发布:2023-03-11

    这篇文章主要介绍了Jetpack Compose 的新型架构 MVI使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Android Jetpack组件库LiveData源码深入探究

    发布:2023-03-11

    LiveData是Jetpack组件的一部分,更多的时候是搭配ViewModel来使用,相对于Observable,LiveData的最大优势是其具有生命感知的,换句话说,LiveData可以保证只有在组件( Activity、Fragment、Service)处于活动生命周期状态的时候才会更新数据


  • 解析Android Jetpack简介

    发布:2023-03-07

    Jetpack是一套库、工具和指南的集合,帮助开发者更轻松地编写优质应用,这篇文章主要介绍了Android Jetpack简介,需要的朋友可以参考下


  • Android Jetpack组件支持库DataBinding与ViewModel与LiveData及Room详解

    发布:2023-03-12

    Jetpack是一个由多个技术库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者精力集中编写重要的代码


  • Android Jetpack组件中LifeCycle作用详细介绍

    发布:2023-03-08

    Jetpack是谷歌在Google I/O 2017大会上发布一套帮助开发者解决Android架构设计的方案,而Lifecycle是Jetpack architecture下的一部分,一起来看一下Lifecycle的使用及原理分析


网友讨论