HarmonyOS 鸿蒙Next 如何使用气泡(Popup)样式

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何使用气泡(Popup)样式

在LazyForEach的列表中,点击每个item能弹出popup(弹出位置在每个Item的上方),并且点击item选项后能自动消失。

2 回复

参考如下demo能否实现:

// Index.ets

class BasicDataSource01 implements IDataSource {

  private listeners: DataChangeListener[] = [];

  private originDataArray: DataItemInfo[] = [];

  public totalCount(): number {

    return 0;

  }

  public getData(index: number): DataItemInfo {

    return this.originDataArray[index];

  }

  registerDataChangeListener(listener: DataChangeListener): void {

    if (this.listeners.indexOf(listener) < 0) {

      console.info('add listener');

      this.listeners.push(listener);

    }

  }

  unregisterDataChangeListener(listener: DataChangeListener): void {

    const pos = this.listeners.indexOf(listener);

    if (pos >= 0) {

      console.info('remove listener');

      this.listeners.splice(pos, 1);

    }

  }

  notifyDataReload(): void {

    this.listeners.forEach(listener => {

      listener.onDataReloaded();

    })

  }

  notifyDataAdd(index: number): void {

    this.listeners.forEach(listener => {

      listener.onDataAdd(index);

    })

  }

  notifyDataChange(index: number): void {

    this.listeners.forEach(listener => {

      listener.onDataChange(index);

    })

  }

  notifyDataDelete(index: number): void {

    this.listeners.forEach(listener => {

      listener.onDataDelete(index);

    })

  }

  notifyDataMove(from: number, to: number): void {

    this.listeners.forEach(listener => {

      listener.onDataMove(from, to);

    })

  }

  notifyDatasetChange(operations: DataOperation[]): void {

    this.listeners.forEach(listener => {

      listener.onDatasetChange(operations);

    })

  }

}

type DataItemInfo = string | null

class MyDataSource01 extends BasicDataSource01 {

  private dataArray: DataItemInfo[] = [];

  public totalCount(): number {

    return this.dataArray.length;

  }

  public getData(index: number): DataItemInfo {

    return this.dataArray[index];

  }

  public addData(index: number, data: DataItemInfo): void {

    this.dataArray.splice(index, 0, data);

    this.notifyDataAdd(index);

  }

  public pushData(data: DataItemInfo): void {

    this.dataArray.push(data);

    this.notifyDataAdd(this.dataArray.length - 1);

  }

}

@Entry

@Component

struct Index {

  @State handlePopup: boolean = false

  @State arr: MyDataSource01 = new MyDataSource01();

  aboutToAppear() {

    for (let i = 1000000000000; i <= 1000000000020; i++) {

      this.arr.pushData(`${i}`)

    }

  }

  build() {

    NavDestination() {

      Column() {

        List({ space: 10 }) {

          LazyForEach(this.arr, (item: DataItemInfo) => {

            ListItem() {

              ChildViewInfo({ item })

            }.width('100%').height(100)

          }, (item: DataItemInfo, index: number) => index.toString())

        }

      }

      .padding(10)

      .backgroundColor(0xDCDCDC)

      .width('100%')

      .height('100%')

    }.title('test')

  }

}

@Component

struct ChildViewInfo {

  @Prop item: DataItemInfo

  @State handlePopup: boolean = false

  build() {

    Column() {

      Text(this.item)

    }.bindPopup(this.handlePopup, {

      message: `点击的是第${this.item}`,

      placement: Placement.Top,

      onStateChange: (e) => {

        console.info(JSON.stringify(e.isVisible))

        if (!e.isVisible) {

          this.handlePopup = false

        }

      }

    }).onClick(() => {

      this.handlePopup = true

    })

  }

}

更多关于HarmonyOS 鸿蒙Next 如何使用气泡(Popup)样式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,使用气泡(Popup)样式通常涉及UI组件的展示与交互。以下是基本的使用步骤:

  1. 创建Popup布局:首先,在resources/layout目录下创建一个XML文件,定义Popup的布局样式。这可以包括文本、图片、按钮等任何需要的UI元素。

  2. 定义Popup组件:在需要展示Popup的页面或组件中,使用Popup组件。通过代码或XML方式,将之前定义的Popup布局与Popup组件关联。

  3. 设置Popup属性:配置Popup的显示位置(如居中、顶部、底部等)、大小、动画效果等属性。这些属性可以在XML中静态设置,也可以在代码中动态调整。

  4. 控制Popup显示与隐藏:通过调用Popup组件的show()hide()方法,控制Popup的显示与隐藏。可以在按钮点击、触摸事件等触发条件下调用这些方法。

  5. 处理Popup交互:如果Popup中包含交互元素(如按钮),需要为这些元素设置事件监听器,处理用户交互。

以上步骤描述了HarmonyOS鸿蒙Next系统中使用气泡(Popup)样式的基本流程。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部