HarmonyOS学习第12天:解锁表格布局的奥秘

表格布局初相识

不知不觉,我们在 HarmonyOS 的学习旅程中已经走到了第 12 天。在之前的学习里,我们逐步掌握了 HarmonyOS 开发的各种基础与核心技能,比如组件的基本使用、布局的初步搭建等,这些知识就像一块块基石,为我们构建强大应用程序奠定了基础。今天,我们将迎来一个新的重要布局方式 —— 表格布局(TableLayout)。

在许多应用场景中,我们常常需要以表格形式展示数据,比如财务报表展示收入支出数据、课程表呈现课程安排、员工信息表罗列员工的各项信息等。在这些情况下,表格布局就显得尤为重要。它能够让数据以一种整齐、结构化的方式呈现,方便用户快速浏览和对比信息 ,极大地提升了数据展示的效率与用户体验。接下来,就让我们深入了解表格布局的使用方式。

搭建表格框架

(一)创建基础表格

在 HarmonyOS 中,使用<TableLayout>标签来创建表格布局。其基本语法如下:

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent">

    <!-- 这里放置表格的内容,如行、列及组件 -->

</TableLayout>

在上述代码中,xmlns:ohos是命名空间声明,用于指定 HarmonyOS 的资源标识符。ohos:heightohos:width属性分别设置表格布局的高度和宽度,这里设置为match_parent,表示表格将填充父容器的整个空间。

接下来,我们通过一个简单的示例来展示如何创建一个包含文本组件的表格。假设我们要创建一个简单的 2x2 表格,每个单元格中放置一个文本:

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent">

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="1"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="2"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="3"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="4"

        ohos:text_size="20fp" />

</TableLayout>

在这个示例中,我们在<TableLayout>中添加了四个<Text>组件。每个<Text>组件设置了高度和宽度为wrap_content,表示根据文本内容自适应大小,同时设置了文本内容和字体大小。运行该代码,即可看到一个简单的表格,其中文本按顺序排列在表格的单元格中 。

(二)设置行列属性

<TableLayout>中,可以通过ohos:row_countohos:column_count属性来设置表格的行数和列数。例如,要创建一个 3 行 4 列的表格,可以这样设置:

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent"

    ohos:row_count="3"

    ohos:column_count="4">

    <!-- 这里放置表格的内容,如行、列及组件 -->

</TableLayout>

当设置了行数和列数后,放置在<TableLayout>中的组件会按照行列顺序依次填充单元格。如果组件数量小于单元格数量,多余的单元格将为空;如果组件数量大于单元格数量,多余的组件将根据布局规则进行显示 。

下面我们通过不同的代码示例来展示设置不同行列数的效果。

示例一:2 行 2 列的表格

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent"

    ohos:row_count="2"

    ohos:column_count="2">

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="A"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="B"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="C"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="D"

        ohos:text_size="20fp" />

</TableLayout>

在这个示例中,四个<Text>组件会依次填充 2 行 2 列的四个单元格,形成一个规整的表格。

示例二:1 行 5 列的表格

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent"

    ohos:row_count="1"

    ohos:column_count="5">

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="1"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="2"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="3"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="4"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="5"

        ohos:text_size="20fp" />

</TableLayout>

此示例中,五个<Text>组件会排列在同一行的五个单元格中,形成一个单行多列的表格效果。通过这些示例,我们可以清晰地看到ohos:row_countohos:column_count属性对表格布局的影响,根据实际需求灵活设置行列数,为后续在表格中放置各种组件奠定基础。

填充表格内容

(一)添加行与列

<TableLayout>中,通过直接添加组件来形成行和列的结构。每个组件默认占据一个单元格,组件会按照添加的顺序依次填充表格的单元格。例如,我们要创建一个简单的 3x3 的表格,每个单元格放置一个按钮,代码如下:

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent"

    ohos:row_count="3"

    ohos:column_count="3">

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮1"

        ohos:text_size="18fp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮2"

        ohos:text_size="18fp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮3"

        ohos:text_size="18fp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮4"

        ohos:text_size="18fp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮5"

        ohos:text_size="18fp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮6"

        ohos:text_size="18fp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮7"

        ohos:text_size="18fp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮8"

        ohos:text_size="18fp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮9"

        ohos:text_size="18fp" />

</TableLayout>

在上述代码中,我们在<TableLayout>标签内依次添加了九个<Button>组件 。由于设置了ohos:row_count="3"ohos:column_count="3",这些按钮会按照 3 行 3 列的方式排列在表格中。运行代码后,即可看到一个整齐的 3x3 按钮表格。

如果需要在表格中添加不同类型的组件,比如文本、图片、输入框等,也可以按照同样的方式进行添加。例如,创建一个包含文本和图片的表格:

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent"

    ohos:row_count="2"

    ohos:column_count="2">

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="姓名"

        ohos:text_size="20fp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="年龄"

        ohos:text_size="20fp" />

    <Image

        ohos:height="100vp"

        ohos:width="100vp"

        ohos:src_element="$media:icon" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="25"

        ohos:text_size="20fp" />

</TableLayout>

在这个示例中,第一行的两个单元格分别放置了 “姓名” 和 “年龄” 文本,第二行的第一个单元格放置了一张图片(通过ohos:src_element指定图片资源),第二个单元格放置了年龄信息的文本。这样就创建了一个简单的数据展示表格,通过这种方式,可以根据实际需求灵活组合各种组件,构建出丰富多样的表格布局。

(二)组件布局技巧

在表格布局中,还可以通过一些属性来控制组件在单元格内的布局,使表格更加美观和符合需求。常见的属性有ohos:layout_alignmentohos:paddingohos:margin等。

ohos:layout_alignment属性用于设置组件在单元格内的对齐方式,它有多个取值,如left(左对齐)、right(右对齐)、center(居中对齐)、top(顶部对齐)、bottom(底部对齐)等。例如,将按钮在单元格内居中对齐:

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent"

    ohos:row_count="2"

    ohos:column_count="2">

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮1"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮2"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮3"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮4"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

</TableLayout>

在上述代码中,每个按钮都设置了ohos:layout_alignment="center",这样按钮在各自所在的单元格内会水平和垂直方向都居中显示,使表格看起来更加整齐美观。

ohos:padding属性用于设置组件内部的内边距,即组件内容与组件边框之间的距离。通过设置ohos:padding,可以调整组件内文本或图片与组件边缘的间距,使组件内容显示更加舒适。例如:

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent"

    ohos:row_count="1"

    ohos:column_count="2">

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="文本1"

        ohos:text_size="20fp"

        ohos:padding="10vp" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="文本2"

        ohos:text_size="20fp"

        ohos:padding="15vp" />

</TableLayout>

在这个例子中,第一个文本组件设置了ohos:padding="10vp",表示其内容与边框四周的距离为 10vp;第二个文本组件设置了ohos:padding="15vp",内边距更大,这样可以直观地看到内边距对组件内容显示的影响,通过合理设置内边距,可以优化组件在单元格内的展示效果。

ohos:margin属性用于设置组件的外边距,即组件与其他组件之间的距离。它可以控制组件在表格中的相对位置,使表格布局更加灵活。例如:

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent"

    ohos:row_count="2"

    ohos:column_count="2">

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮A"

        ohos:text_size="18fp"

        ohos:margin="5vp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮B"

        ohos:text_size="18fp"

        ohos:margin="10vp 5vp 10vp 5vp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮C"

        ohos:text_size="18fp"

        ohos:margin="5vp 10vp" />

    <Button

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="按钮D"

        ohos:text_size="18fp" />

</TableLayout>

在这段代码中,第一个按钮设置了ohos:margin="5vp",表示其与四周其他组件的距离均为 5vp;第二个按钮设置了ohos:margin="10vp 5vp 10vp 5vp",分别表示上、右、下、左的外边距,即上和下外边距为 10vp,左和右外边距为 5vp;第三个按钮设置了ohos:margin="5vp 10vp",表示上外边距为 5vp,左右外边距为 10vp(下外边距默认为 0);第四个按钮未设置外边距。通过这些不同的外边距设置,可以看到按钮在表格中的位置发生了明显变化,合理运用外边距属性能够精确控制组件在表格中的布局,满足各种复杂的布局需求。

表格布局实战

(一)数据展示案例

下面我们通过一个实际的学生成绩表案例,更深入地展示表格布局在展示复杂数据时的强大功能。假设我们要展示一个包含学生姓名、语文成绩、数学成绩和英语成绩的表格。

首先,在布局文件中创建表格结构:

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent"

    ohos:row_count="5"

    ohos:column_count="4">

    <!-- 表头部分 -->

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="姓名"

        ohos:text_size="20fp"

        ohos:background_element="#F0F0F0"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="语文"

        ohos:text_size="20fp"

        ohos:background_element="#F0F0F0"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="数学"

        ohos:text_size="20fp"

        ohos:background_element="#F0F0F0"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="英语"

        ohos:text_size="20fp"

        ohos:background_element="#F0F0F0"

        ohos:layout_alignment="center" />

    <!-- 数据行部分 -->

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="张三"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="85"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="90"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="88"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="李四"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="78"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="85"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="92"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="王五"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="90"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="88"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="95"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

</TableLayout>

在上述代码中,我们首先设置了表格的行数为 5,列数为 4 。前四行的文本组件构成了表头,通过设置ohos:background_element="#F0F0F0"来改变表头的背景颜色,使其与数据行区分开来,同时设置ohos:layout_alignment="center"使表头文本居中显示。从第五行开始,每四行文本组件为一组,构成一个学生的数据行,展示学生的姓名和各科成绩。通过这样的方式,我们创建了一个简单而清晰的学生成绩表。运行代码后,即可看到一个整齐排列的成绩表格,用户可以方便地查看每个学生的成绩信息。

(二)交互功能实现

在实际应用中,表格不仅仅是展示数据,还常常需要与用户进行交互。例如,为表格组件添加点击事件,当用户点击某个单元格时,获取该单元格的数据并进行相应处理。下面我们通过代码示例来展示如何实现这一功能。

假设我们在上述学生成绩表的基础上,为每个单元格添加点击事件,当点击单元格时,弹出一个提示框显示该单元格的数据。首先,在布局文件中为每个需要添加点击事件的组件(这里是每个<Text>组件)设置ohos:id属性,以便在代码中获取并设置点击事件:

<TableLayout

    xmlns:ohos="http://schemas.huawei.com/res/ohos"

    ohos:height="match_parent"

    ohos:width="match_parent"

    ohos:row_count="5"

    ohos:column_count="4">

    <!-- 表头部分 -->

    <Text

        ohos:id="$+id:header_name"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="姓名"

        ohos:text_size="20fp"

        ohos:background_element="#F0F0F0"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:header_chinese"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="语文"

        ohos:text_size="20fp"

        ohos:background_element="#F0F0F0"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:header_math"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="数学"

        ohos:text_size="20fp"

        ohos:background_element="#F0F0F0"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:header_english"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="英语"

        ohos:text_size="20fp"

        ohos:background_element="#F0F0F0"

        ohos:layout_alignment="center" />

    <!-- 数据行部分 -->

    <Text

        ohos:id="$+id:name_zhang"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="张三"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:chinese_zhang"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="85"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:math_zhang"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="90"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:english_zhang"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="88"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:name_li"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="李四"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:chinese_li"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="78"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:math_li"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="85"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:english_li"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="92"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:name_wang"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="王五"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:chinese_wang"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="90"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:math_wang"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="88"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

    <Text

        ohos:id="$+id:english_wang"

        ohos:height="wrap_content"

        ohos:width="wrap_content"

        ohos:text="95"

        ohos:text_size="18fp"

        ohos:layout_alignment="center" />

</TableLayout>

然后,在对应的 Java 代码中获取这些组件并设置点击事件:

import ohos.aafwk.ability.AbilitySlice;

import ohos.aafwk.content.Intent;

import ohos.agp.components.Component;

import ohos.agp.components.Text;

import ohos.agp.window.dialog.ToastDialog;

public class MainAbilitySlice extends AbilitySlice {

    @Override

    public void onStart(Intent intent) {

        super.onStart(intent);

        super.setUIContent(ResourceTable.Layout_ability_main);

        // 获取表头组件并设置点击事件

        Text headerName = (Text) findComponentById(ResourceTable.Id_header_name);

        headerName.setClickedListener(new Component.ClickedListener() {

            @Override

            public void onClick(Component component) {

                new ToastDialog(getContext()).setText("点击了表头:姓名").show();

            }

        });

        Text headerChinese = (Text) findComponentById(ResourceTable.Id_header_chinese);

        headerChinese.setClickedListener(new Component.ClickedListener() {

            @Override

            public void onClick(Component component) {

                new ToastDialog(getContext()).setText("点击了表头:语文").show();

            }

        });

        // 以此类推,为其他表头组件设置点击事件

        // 获取数据行组件并设置点击事件

        Text nameZhang = (Text) findComponentById(ResourceTable.Id_name_zhang);

        nameZhang.setClickedListener(new Component.ClickedListener() {

            @Override

            public void onClick(Component component) {

                new ToastDialog(getContext()).setText("点击了单元格:张三").show();

            }

        });

        Text chineseZhang = (Text) findComponentById(ResourceTable.Id_chinese_zhang);

        chineseZhang.setClickedListener(new Component.ClickedListener() {

            @Override

            public void onClick(Component component) {

                new ToastDialog(getContext()).setText("点击了单元格:85").show();

            }

        });

        // 以此类推,为其他数据行组件设置点击事件

    }

    @Override

    public void onActive() {

        super.onActive();

    }

    @Override

    public void onForeground(Intent intent) {

        super.onForeground(intent);

    }

}

在上述代码中,我们通过findComponentById方法获取每个<Text>组件,并使用setClickedListener方法为其设置点击事件。在点击事件的回调函数中,创建一个ToastDialog对象,将点击的单元格数据作为提示信息显示出来。这样,当用户点击表格中的任意单元格时,都能获取到该单元格的数据并通过提示框展示,实现了表格与用户之间的交互功能。通过这种方式,可以根据实际需求对点击单元格的数据进行更复杂的处理,如跳转到详细信息页面、进行数据编辑等 。

总结与展望

通过今天的学习,我们全面了解了 HarmonyOS 中表格布局(TableLayout)的使用方式。从创建基础表格框架,到设置行列属性,再到填充各种组件以及实现交互功能,表格布局为我们在 HarmonyOS 应用开发中展示数据提供了一种高效、直观的方式 。它能够使复杂的数据以整齐、有序的表格形式呈现,大大提升了用户获取信息的效率。

希望大家能够将今天所学的表格布局知识运用到实际项目中,通过不断练习和实践,熟练掌握其使用技巧。在后续的学习中,我们还将探索更多 HarmonyOS 的布局知识,如更加灵活的弹性布局、适用于复杂界面的相对布局等,它们将为我们的应用开发带来更多的可能性,让我们一起期待并继续深入学习吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27280.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划刷题

文章目录 动态规划三步问题题目解析代码 动态规划 1. 状态表示&#xff1a;dp[i]&#xff0c;表示dp表中i下标位置的值 2. 状态转移方程&#xff1a;以i位置位置的状态&#xff0c;最近的一步来划分问题&#xff0c;比如可以将状态拆分成前状态来表示现状态&#xff0c;dp[i] …

大语言模型微调的基本概念介绍

大型语言模型&#xff08;LLMs&#xff09;正在以惊人的速度发展&#xff0c;LLM微调的潜力更是如此。大型语言模型的生命周期有几个关键步骤&#xff0c;今天我们将要介绍这个周期中最丰富、最耗时的一部分——LLM微调过程。 大语言模型的生命周期 在深入了解大型语言模型&a…

PyCharm接入本地部署DeepSeek 实现AI编程!【支持windows与linux】

今天尝试在pycharm上接入了本地部署的deepseek&#xff0c;实现了AI编程&#xff0c;体验还是很棒的。下面详细叙述整个安装过程。 本次搭建的框架组合是 DeepSeek-r1:1.5b/7b Pycharm专业版或者社区版 Proxy AI&#xff08;CodeGPT&#xff09; 首先了解不同版本的deepsee…

Spring MVC 程序开发(1)

目录 1、什么是 SpringMVC2、返回数据2.1、返回 JSON 对象2.2、请求转发2.3、请求重定向2.4、自定义返回的内容 1、什么是 SpringMVC 1、Tomcat 和 Servlet 分别是什么&#xff1f;有什么关系&#xff1f; Servlet 是 java 官方定义的 web 开发的标准规范&#xff1b;Tomcat 是…

Notepad++下载地址【亲测好用】

网上下载链接五花八门&#xff0c;最终找到了一个官方下载链接。 本文章就用来记录Notepad下载网址 https://github.com/notepad-plus-plus/notepad-plus-plus/tags

LeetCode 873. Length of Longest Fibonacci Subsequence(2025/2/27每日一题)

昨天工作耽搁了&#xff0c;没来得及打卡每日一题&#xff0c;今日补上&#xff1a; 标题&#xff1a;Length of Longest Fibonacci Subsequence 题目&#xff1a; 例子&#xff1a; Example 1: Input: arr [1,2,3,4,5,6,7,8] Output: 5 Explanation: The longest subsequ…

【uniapp】在UniApp中实现持久化存储:安卓--生成写入数据为jsontxt

在移动应用开发中&#xff0c;数据存储是一个至关重要的环节。对于使用UniApp开发的Android应用来说&#xff0c;缓存&#xff08;Cache&#xff09;是一种常见的数据存储方式&#xff0c;它能够提高应用的性能和用户体验。然而&#xff0c;缓存数据在用户清除缓存或清除应用数…

【小羊肖恩】小羊杯 Round 2 C+K

题目链接&#xff1a;https://ac.nowcoder.com/acm/contest/100672#question C.是毛毛虫吗&#xff1f; 思路&#xff1a; 其实很简单&#xff0c;假设我们要满足题目所给条件&#xff0c;那么这个毛毛虫最坏情况下肯定是一条如下图所示的无向图 右端省略号为对称图形 &…

【定昌Linux系统】部署了java程序,设置开启启动

将代码上传到相应的目录&#xff0c;并且配置了一个.sh的启动脚本文件 文件内容&#xff1a; #!/bin/bash# 指定JAR文件的路径&#xff08;如果JAR文件在当前目录&#xff0c;可以直接使用文件名&#xff09; JAR_FILE"/usr/local/java/xs_luruan_client/lib/xs_luruan_…

17、什么是智能指针,C++有哪几种智能指针【高频】

智能指针其实不是指针&#xff0c;而是一个&#xff08;模板&#xff09;类&#xff0c;用来存储指向某块资源的指针&#xff0c;并自动释放这块资源&#xff0c;从而解决内存泄漏问题。主要有以下四种&#xff1a; auto_ptr 它的思想就是当当一个指针对象赋值给另一个指针对…

基于SpringBoot和PostGIS的省域“地理难抵点(最纵深处)”检索及可视化实践

目录 前言 1、研究背景 2、研究意义 一、研究目标 1、“地理难抵点”的概念 二、“难抵点”空间检索实现 1、数据获取与处理 2、计算流程 3、难抵点计算 4、WebGIS可视化 三、成果展示 1、华东地区 2、华南地区 3、华中地区 4、华北地区 5、西北地区 6、西南地…

Git学习

Git命令 1、管理文件夹&#xff0c;创建版本仓库 创建文件夹 mkdir repos初始化命令 git init2、查看工作区的文件状态 注&#xff1a;新增和修改过后的文件都是红色 git status3、提交缓存区 注&#xff1a;加入缓存区后的文件变成绿色 git add . git add 文件名4、生…

数据库拓展操作

目录 一、截断表&#xff1a; 操作目的&#xff1a; 操作内容&#xff1a; 性能影响&#xff1a; 基本语法&#xff1a; 例子&#xff1a; 二、插入查询结果&#xff1a; 基本语法&#xff1a; 例子&#xff1a; 三、聚合函数&#xff1a; 常用函数&#xff1a; 基…

【Java分布式】Nacos注册中心

Nacos注册中心 SpringCloudAlibaba 也推出了一个名为 Nacos 的注册中心&#xff0c;相比 Eureka 功能更加丰富&#xff0c;在国内受欢迎程度较高。 官网&#xff1a;https://nacos.io/zh-cn/ 集群 Nacos就将同一机房内的实例划分为一个集群&#xff0c;一个服务可以包含多个集…

鸿蒙兼容Mapbox地图应用测试

鸿蒙Next已经发布一段时间了&#xff0c;很多之前的移动端地图应用&#xff0c;纷纷都要求适配鸿蒙Next。作为开发者都清楚&#xff0c;所谓的适配其实都是重新开发&#xff0c;鸿蒙的开发语言和纯前端的Javascript不同&#xff0c;也可以Android原始开发的语言不同。鸿蒙自带的…

老牌工具,16年依然抗打!

在电脑还没普及、操作系统为Windows XP/7的时代&#xff0c;多媒体文件的转换操作常常面临格式不兼容的问题。这时一款名为格式工厂的软件成为了众多用户的首选工具。格式工厂以其简洁易用的界面和强大的功能&#xff0c;轻松地进行各种文件格式的转换。成为很多修小伙伴的喜爱…

前缀和算法 算法4

算法题中帮助复习的知识 vector<int > dp( n ,k); n为数组大小 ,k为初始化 哈希表unordered_map<int ,int > hash; hash.find(k)返回值是迭代器 ,找到k返回其迭代器 没找到返回hash.end() hash.count(k)返回值是数字 ,找到k返回1 ,没找到返回0. C和java中 负数…

如何使用Spring Boot框架整合Redis:超详细案例教程

目录 # 为什么选择Spring Boot与Redis整合&#xff1f; 1. 更新 pom.xml 2. 配置application.yml 3. 创建 Redis 配置类 4. Redis 操作类 5. 创建控制器 6. 启动应用程序 7. 测试 # 为什么选择Spring Boot与Redis整合&#xff1f; 将Spring Boot与Redis整合可以充分利…

DeepSeek开源周,第五弹再次来袭,3FS

Fire-Flyer 文件系统&#xff08;3FS&#xff09;总结&#xff1a; 一、核心特点 3FS 是一个专为 AI 训练和推理工作负载设计的高性能分布式文件系统&#xff0c;利用现代 SSD 和 RDMA 网络&#xff0c;提供共享存储层&#xff0c;简化分布式应用开发。其主要特点包括&#xf…

爬虫系列之【数据解析之JSON】《三》

目录 前置知识 一、 json.loads()&#xff1a;JSON 转 Python 数据 二、json.dump()&#xff1a;python数据 转 json 并写入文件 三、json.loads() &#xff1a;json 转 python数据 四、json.load() &#xff1a;json 转 python数据&#xff08;在文件操作中更方便&#xf…