Android最新控件FlexboxLayout



前言

最近Google开源了一个项目叫「FlexboxLayout」,但是貌似没多少资料对这个项目介绍的,那么今天来讲讲这个项目的作用以及简单的使用介绍。

什么是 Flexbox

简单来说 Flexbox 是属于web前端领域CSS的一种布局方案,是2009年W3C提出了一种新的布局方案,可以简便、完整、响应式地实现各种页面布局,并且 React Native 也是使用的 Flex 布局。

你可以简单的理解为 Flexbox 是CSS领域类似 Linearlayout 的一种布局,但是要比 Linearlayout 要强大的多。

什么是 FlexboxLayout?

刚才说了 Flexbox 是CSS领域的比较强大的一个布局,我们在 Android 开发中使用 Linearlayout + RelativeLayout 基本可以实现大部分复杂的布局,但是Google就想了,有没有类似 Flexbox 的一个布局呢?这使用起来一个布局就可以搞定各种复杂的情况了,于是 FlexboxLayout 就应运而生了。

所以 FlexboxLayout 是针对 Android 平台的,实现类似 Flexbox 布局方案的一个开源项目,开源地址:

https://github.com/google/flexbox-layout

使用方式

使用方式很简单,只需要添加以下依赖:

compile 'com.google.android:flexbox:0.1.2'

xml中这样使用:


或者代码中这样使用:


使用起来是不是很像Linearlayout的用法,只不过有很多属性你们比较陌生,这些属性都是Flexbox布局本身具备的,别着急,下面跟你们介绍下FlexboxLayout的一些具体属性的用法与意义。

支持的属性

flexDirection

flexDirection 属性决定主轴的方向(即项目的排列方向)。类似 LinearLayout 的 vertical 和 horizontal。

有四个值可以选择:

row(默认值):主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右端。
column:主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。


flexWrap

默认情况下 Flex 跟 LinearLayout 一样,都是不带换行排列的,但是flexWrap属性可以支持换行排列。这个也比 LinearLayout 吊啊有三个值:

nowrap :不换行
wrap:按正常方向换行
wrap-reverse:按反方向换行



justifyContent

justifyContent属性定义了项目在主轴上的对齐方式。

flex-start(默认值):左对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

alignItems

alignItems属性定义项目在副轴轴上如何对齐。

flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐。
center:交叉轴的中点对齐。
baseline: 项目的第一行文字的基线对齐。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。


alignContent

alignContent属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

flex-start:与交叉轴的起点对齐。
flex-end:与交叉轴的终点对齐。
center:与交叉轴的中点对齐。
space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
stretch(默认值):轴线占满整个交叉轴。

子元素属性

除以上之外,FlexboxLayout还支持如下子元素属性:

layout_order

默认情况下子元素的排列方式按照文档流的顺序依次排序,而order属性可以控制排列的顺序,负值在前,正值灾后,按照从小到大的顺序依次排列。我们说之所以 FlexboxLayout 相对LinearLayout强就是因为一些属性比较给力,order就是其中之一。

layout_flexGrow

layout_flexGrow 属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。一张图看懂。跟 LinearLayout 中的weight属性一样。

如果所有项目的 layout_flexGrow  属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的 layout_flexGrow  属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

layout_flexShrink

layout_flexShrink  属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

如果所有项目的 layout_flexShrink  属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。

layout_alignSelf

layout_alignSelf  属性允许单个子元素有与其他子元素不一样的对齐方式,可覆盖 alignItems 属性。默认值为auto,表示继承父元素的 alignItems 属性,如果没有父元素,则等同于stretch。

auto (default)
flex_start
flex_end
center
baseline
stretch

该属性可能取6个值,除了auto,其他都与align-items属性完全一致。

layout_flexBasisPercent

layout_flexBasisPercent 属性定义了在分配多余空间之前,子元素占据的main size主轴空间,浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即子元素的本来大小。

不同之处

跟传统的CSS中的Flexbox布局有些不同的是:

1. 没有 flex-flow 属性

2. 没有 flex 属性

3. layout_flexBasisPercent 属性即为CSS中 flexbox 中的 flexBasis 属性

4. 不支持 min-width 和 min-height 两个属性

以上就是 FlexboxLayout 的一些基本介绍与基本用法,值得提醒大家的是,本身这个项目也是一个很好的自定义View的学习资料,值得大家学习借鉴!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android引导控件是一种用户界面元素,用于向用户展示应用程序的功能和特点,并引导用户完成应用程序中的特定任务或操作。它通常在应用程序第一次运行时出现,或者在应用程序进行重大更新或改进时出现,以便向用户介绍新的功能和改进。Android引导控件可以包括文本、图像、动画和按钮等元素,可以根据应用程序的需要进行自定义配置。 ### 回答2: Android引导控件是一种用户引导功能,它可以帮助用户了解和熟悉应用程序的界面和功能。通常在应用程序第一次打开时使用引导控件,它向用户展示关键的界面元素和操作流程。 Android引导控件可以通过多种方式实现,其中一种常见的方法是使用库或框架。这些库或框架提供了简单易用的API,使开发者可以快速创建和定制引导控件。 通过使用引导控件,开发人员可以在应用程序中添加用户引导,以向用户展示如何使用不同的功能和界面。例如,可以在UI上添加一个蒙版,突出显示关键的按钮、文本框或其他交互元素,并提供步骤指引。用户可以按照指引逐步完成操作,并理解应用程序的各个方面。 引导控件通常可以配置为只在首次启动应用程序时显示,或在每次启动应用程序时都显示。它们也可以根据用户的操作进度来设置触发条件,以确保用户仅在需要时才会看到引导。 通过使用Android引导控件,开发人员可以改善应用程序的用户体验,并帮助新用户更快地掌握应用程序的操作。这不仅有助于提高用户参与度和满意度,还有助于降低用户学习应用程序的难度。 总而言之,Android引导控件是一种有用的交互设计工具,可以帮助开发人员向用户展示应用程序的功能和界面,并提供操作指引,以提高用户体验和参与度。 ### 回答3: Android引导控件是一种用于在应用程序初次运行时展示使用指南或提示的控件。它可以帮助用户了解应用的功能和操作方式,提高用户体验和应用的易用性。 Android引导控件通常以一个弹窗或者一个覆盖在屏幕上方的视图形式出现。开发人员可以自定义引导控件的展示内容,包括文字、图片、按钮等。在用户第一次打开应用时,引导控件会显示相应的提示信息,指引用户完成一些关键操作或者熟悉应用界面。例如,在社交媒体应用中,引导控件可以引导用户创建账号、添加好友或者发布内容。 为了实现引导控件,开发人员需要编写相关的代码逻辑。首先,需要确定在用户初次打开应用时应该显示引导控件的条件。然后,在相应的活动或片段中创建和初始化引导控件,并设置其内容和样式。最后,将引导控件添加到应用界面中,并在用户完成操作后关闭引导控件。除了手动触发外,开发人员还可以在应用配置文件中指定引导控件的展示条件,以实现灵活的控制。 然而,需要注意的是,过多或不必要的引导控件可能会给用户带来困扰,甚至适得其反。因此,在设计引导控件时应该遵循简洁明了、关键明确的原则,确保用户能够快速理解和使用应用。 综上所述,Android引导控件是一种用于向用户展示使用指南或提示的控件。通过合理使用引导控件,开发人员可以提高应用的易用性和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值