【HarmonyOS闯关习题】——从简单的页面开始

一、判断题

1. Button作为容器使用时可以通过添加子组件实现包含文字、图片等元素的按钮,其类型包括胶囊按钮、圆形按钮、普通按钮、圆角矩形按钮。

  • 答案:正确 (True)
  • 解析:Button 组件支持容器模式,可通过子组件嵌入 Image 等元素;其type属性确实包含Normal(普通)、Capsule(胶囊)、Circle(圆形)和RoundRect(圆角矩形)等样式。

2. Resource是资源引用类型,用于设置组件属性的值,可以定义组件的颜色、文本大小、组件大小等属性。

  • 答案:正确 (True)
  • 解析:Resource类型通过$r()引用resources目录下的颜色、尺寸、字符串等资源,常用于动态适配不同屏幕或语言环境。

3. 在Column容器中的子组件默认是按照从上到下的垂直方向布局的,其主轴的方向是垂直方向,在Row容器中的组件默认是按照从左到右的水平方向布局的,其主轴的方向是水平方向。

  • 答案:正确 (True)
  • 解析:Column 主轴为垂直方向,默认从上到下排列;Row 主轴为水平方向,默认从左到右排列(在默认 LTR 语言环境下)。

二、单选题

1. 关于ForEach循环渲染的描述错误的是:

  • A. arr数据源,为Array类型的数组。
  • B. itemGenerator为子组件生成函数,为数组中的每个元素创建对应的组件。
  • C. keyGenerator为数组项唯一键值生成函数,为数据源arr的每个数组项生成唯一且持久的键值,函数返回值为开发者自定义的键值生成规则。
  • D. ForEach基于数组类型数据来进行循环渲染,需要与容器组件配合使用,且可以返回任意子组件。
  • 答案:D
  • 解析:ForEach 是 ArkUI 提供的循环渲染控制语句,并不是一个组件,它必须遵循特定的语法结构(如放在构建函数中),且生成子组件时不能脱离容器上下文随意“返回任意子组件”。
    ForEach接口基于数组类型数据来进行循环渲染,需要与容器组件配合使用,且接口返回的组件应当是允许包含在ForEach父容器组件中的子组件。

2. Image不支持哪种图片格式:

  • A. svg
  • B. eps
  • C. gif
  • D. bmp
  • 答案:B
  • 解析:Image 组件原生支持常见的 SVG、GIF、BMP、PNG 和 JPG 等格式,不支持 EPS 格式(EPS 通常用于矢量绘图软件,不适用于移动端直接渲染)。

3. 下面哪个组件层次结构是错误的:

  • A. List>ListItem>Column
  • B. Column>List>ListItem
  • C. Grid>Row>GridItem
  • D. Grid>GridItem
  • 答案:C
  • 解析:Grid 网格布局的直接子组件必须是GridItem,不允许直接将RowColumn作为 Grid 的子级。正确的写法应为Grid>GridItem>Row

4. 需要在主轴上使第一个元素到行首的距离和最后一个元素到行尾的距离是相邻元素之间距离的一半,通过下列哪种方式设置:

  • A. justifyContent(FlexAlign.SpaceBetween)
  • B. justifyContent(FlexAlign.SpaceAround)
  • C. justifyContent(FlexAlign.SpaceEvenly)
  • D. justifyContent(FlexAlign.Center)
  • 答案:B
  • 解析:SpaceAround会将元素均匀分布在主轴空间内,第一个元素到行首、最后一个元素到行尾的距离正好是相邻元素间距的一半SpaceBetween首尾无间距,SpaceEvenly所有间距相等。

三、多选题

1. 关于ImageFit的类型和说明正确的是:

  • A. Contain:保持宽高比进行缩小或者放大,使得图片完全显示在显示边界内。
  • B. None:保持原有尺寸显示。
  • C. Fill:不保持宽高比进行放大缩小,使得图片充满显示边界。
  • D. Scale:保持宽高比显示,图片缩小或者保持不变。
  • E. Cover:保持宽高比进行缩小或者放大,使得图片两边都大于或等于显示边界。
  • 答案:A、B、C、E
  • 解析:ImageFit 枚举有效值包括ContainCoverFillNoneScaleDown(保持宽高比缩小,不放大)。D 选项中的Scale并非有效类型,正确名称为ScaleDown,故不选。

2. Row容器的主轴是水平方向,交叉轴是垂直方向,其参数类型为VerticalAlign (垂直对齐),VerticalAlign 定义了以下几种类型?

  • A. Top
  • B. Bottom
  • C. Start
  • D. End
  • E. Center
  • 答案:A、B、E
  • 解析:Row 的交叉轴(垂直方向)对齐属性VerticalAlign取值为TopCenterBottomStartEnd是主轴(水平方向)的对齐值,属于HorizontalAlignFlexAlign的范畴。

3. TextDecorationType不包含哪几种类型?

  • A. None
  • B. LineThrough
  • C. TopLine
  • D. Bottomline
  • 答案:C、D
  • 解析:TextDecorationType 枚举包含None(无)、Overline(上划线)、LineThrough(删除线)和Underline(下划线)。TopLineBottomline并不属于该枚举类型,故选择 C、D。