如何使用 Toolbar 组件实现页面底部的工具栏?

我想用 Toolbar 组件实现一个页面底部的工具栏,工具栏上要有几个按钮,比如“返回首页”“设置”“帮助”等,但不太确定如何布局和控制这些按钮的点击事件。有没有简单的代码示例可以分享?

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

阅读 613
avatarAI BotBETA
### 使用 Toolbar 组件实现页面底部的工具栏

在 HarmonyOS 开发中,你可以使用 `Toolbar` 组件来实现页面底部的工具栏。以下是一个简单的代码示例,展示了如何布局 `Toolbar` 组件并控制按钮的点击事件。

#### 1. 在 XML 布局文件中定义 Toolbar

首先,在你的页面的 XML 布局文件中定义一个 `Toolbar` 组件,并将其放置在页面的底部。你可以通过 `alignment` 属性来设置其位置。

<DirectionalLayout

xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:width="match_parent"
ohos:height="match_parent"
ohos:orientation="vertical"
ohos:alignment="center">

<!-- 其他页面内容 -->

<Toolbar
    ohos:id="$+id:bottom_toolbar"
    ohos:width="match_parent"
    ohos:height="wrap_content"
    ohos:alignment="bottom_center"
    ohos:background_element="#FFFFFF"
    ohos:orientation="horizontal">

    <Button
        ohos:id="$+id:home_button"
        ohos:width="0dp"
        ohos:weight="1"
        ohos:height="wrap_content"
        ohos:text="返回首页"
        ohos:text_size="16fp"/>

    <Button
        ohos:id="$+id:settings_button"
        ohos:width="0dp"
        ohos:weight="1"
        ohos:height="wrap_content"
        ohos:text="设置"
        ohos:text_size="16fp"/>

    <Button
        ohos:id="$+id:help_button"
        ohos:width="0dp"
        ohos:weight="1"
        ohos:height="wrap_content"
        ohos:text="帮助"
        ohos:text_size="16fp"/>
</Toolbar>

</DirectionalLayout>


#### 2. 在 Java 代码中处理按钮点击事件

接下来,在你的页面的 Java 代码中,通过 `findComponentById` 方法获取 `Toolbar` 和按钮的实例,并设置按钮的点击事件监听器。

import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.agp.components.Toolbar;

public class MainAbility extends Ability {

@Override
protected void onStart(Intent intent) {
    super.onStart(intent);
    super.setUIContent(ResourceTable.Layout_ability_main);

    // 获取 Toolbar 和按钮的实例
    Toolbar bottomToolbar = (Toolbar) findComponentById(ResourceTable.Id_bottom_toolbar);
    Button homeButton = (Button) findComponentById(ResourceTable.Id_home_button);
    Button settingsButton = (Button) findComponentById(ResourceTable.Id_settings_button);
    Button helpButton = (Button) findComponentById(ResourceTable.Id_help_button);

    // 设置按钮的点击事件监听器
    homeButton.setClickedListener(new Component.ClickedListener() {
        @Override
        public void onClick(Component component) {
            // 处理返回首页的逻辑
            // 例如,启动首页 Ability
            startAbility(new Intent(MainAbility.this, HomeAbility.class));
        }
    });

    settingsButton.setClickedListener(new Component.ClickedListener() {
        @Override
        public void onClick(Component component) {
            // 处理设置的逻辑
            // 例如,启动设置 Ability
            startAbility(new Intent(MainAbility.this, SettingsAbility.class));
        }
    });

    helpButton.setClickedListener(new Component.ClickedListener() {
        @Override
        public void onClick(Component component) {
            // 处理帮助的逻辑
            // 例如,显示帮助信息
            showDialog("帮助信息", "这是帮助内容。");
        }
    });
}

// 显示对话框的方法(示例)
private void showDialog(String title, String message) {
    // 实现显示对话框的逻辑
}

}


以上代码展示了如何使用 `Toolbar` 组件在页面底部实现一个包含“返回首页”、“设置”和“帮助”按钮的工具栏,并处理这些按钮的点击事件。你可以根据实际需求修改按钮的文本、图标和点击事件的处理逻辑。
1 个回答

ToolBar实现底部工具栏具体可参考文档,文档有相关代码。
参考代码:

import { ToolBar, ToolBarOptions, ItemState } from '@kit.ArkUI'

@Entry
@Component
struct Index {
  @State toolbarList: ToolBarOptions = new ToolBarOptions()
  aboutToAppear() {
    this.toolbarList.push({
      content: '剪贴我是超超超超超超超超超长样式',
      icon: $r('sys.media.ohos_ic_public_share'),
      action: () => {
      },
    })
    this.toolbarList.push({
      content: '拷贝',
      icon: $r('sys.media.ohos_ic_public_copy'),
      action: () => {
      },
      state:ItemState.DISABLE
    })
    this.toolbarList.push({
      content: '粘贴',
      icon: $r('sys.media.ohos_ic_public_paste'),
      action: () => {
      },
      state:ItemState.ACTIVATE
    })
    this.toolbarList.push({
      content: '全选',
      icon: $r('sys.media.ohos_ic_public_select_all'),
      action: () => {
      },
    })
    this.toolbarList.push({
      content: '分享',
      icon: $r('sys.media.ohos_ic_public_share'),
      action: () => {
      },
    })
    this.toolbarList.push({
      content: '分享',
      icon: $r('sys.media.ohos_ic_public_share'),
      action: () => {
      },
    })
  }
  build() {
    Row() {
      Stack() {
        Column() {
          ToolBar({
            activateIndex: 2,
            toolBarList: this.toolbarList,
          })
        }
      }.align(Alignment.Bottom)
      .width('100%').height('100%')
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题