HarmonyOS 希望提供分享弹窗Demo

1.底部弹出分享框,两行,可左右滑动。

2.底部弹窗基础控件,内部内容可任意定制。

HarmonyOS
16h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

参考demo:

import { BusinessError } from '@ohos.base';
import { ComponentContent } from "@ohos.arkui.node";
import { PromptAction } from '@kit.ArkUI';
class Params {
  ApplicationSharings : string[] = [];
  Sharings : string[] = [];
  promptAction:PromptAction;
  numss:number = 0
  constructor(ApplicationSharings : string[],Sharings : string[] = [],promptAction:PromptAction,numss:number) {
    this.ApplicationSharings = ApplicationSharings;
    this.Sharings = Sharings;
    this.promptAction = promptAction;
    this.numss = numss;
  }
}
@Builder
function buildText($$: Params) {
  Column() {
    Text('网页由mp.huawei.com提供')
      .fontSize(10)
    Grid() {
      ForEach($$.ApplicationSharings, (item: string, index) => {
        GridItem() {
          Column() {
            Image($r('app.media.app_icon'))
              .height(50).width(50)
            Text(item)
              .fontSize(10)
          }
        }
      })
    }.height(100)
    .rowsGap(20)
    .columnsGap(20)
    .scrollBar(BarState.Off)
    .rowsTemplate('1fr')
    Grid() {
      ForEach($$.Sharings, (item: string, index) => {
        GridItem() {
          Column() {
            Image($r('app.media.app_icon'))
              .height(50).width(50)
            Text(item)
              .fontSize(10)
          }
        }
      })
    }
    .height(100)
    .rowsGap(20)
    .columnsGap(20)
    .scrollBar(BarState.Off)
    .rowsTemplate('1fr')
    Button('取消')
      .width('100%')
      .fontColor(Color.Black)
      .backgroundColor(Color.White)
      .onClick(()=>{
        let link1: SubscribedAbstractProperty<number> = storage.link('PropA');
        let numsss = link1.get()
        console.log(':::numsss',link1.get())
        link1.set(++numsss)
      })
  }
  .backgroundColor('#FFF0F0F0')
  .width('90%')
  .height('30%')
  .borderRadius(10)
}
let para: Record<string,number> = { 'PropA': 1 };
let storage: LocalStorage = new LocalStorage(para); // 创建新实例并使用给定对象初始化
@Entry(storage)
@Component
struct CustomDialogDemo {
  @State message: string = "hello"
  @State ApplicationSharings : string[] = ['转发','群发给客户','群发到客户群','分享到同事吧','收藏','群发到客户群','分享到同事吧','收藏','刷新','翻译','复制链接','调整字体','刷新','翻译']
  @State Sharings : string[] = ['最小化','复制链接','调整字体','刷新','翻译','复制链接','调整字体','刷新','翻译']
  @LocalStorageLink('PropA')@Watch('onchang') nums :number = 0;
  @LocalStorageLink('uiContext') aaa:UIContext = this.getUIContext();
  @LocalStorageLink('PropAA') shjsh:ComponentContent<Params>| null = null //new ComponentContent(this.aaa,wrapBuilder(ssss));
  aboutToAppear(): void {
  }
  onchang(){
    console.log('::: onchang')
    try {
      this.aaa.getPromptAction().closeCustomDialog(this.shjsh);
    } catch (error) {
      let message = (error as BusinessError).message;
      let code = (error as BusinessError).code;
      console.error(`OpenCustomDialog args error code is ${code}, message is ${message}`);
    };
  }
  build() {
    Row() {
      Column() {
        TextInput()
          .id('aaa')
          .visibility(Visibility.None)
        Button("click me")
          .onClick(() => {
            let uiContext = this.getUIContext();
            let promptAction = uiContext.getPromptAction();
            let contentNode = new ComponentContent(uiContext, wrapBuilder(buildText), new Params(this.ApplicationSharings,this.Sharings,promptAction,this.nums));
            this.shjsh = contentNode
            try {
              promptAction.openCustomDialog(contentNode);
            } catch (error) {
              let message = (error as BusinessError).message;
              let code = (error as BusinessError).code;
              console.error(`OpenCustomDialog args error code is ${code}, message is ${message}`);
            };
          })
      }
      .width('100%')
      .height('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
14h前
相关问题
HarmonyOS 希望提供日期组件Demo
0浏览 • 0回复 待解决
HarmonyOS 希望提供滑动控件Demo
0浏览 • 0回复 待解决
HarmonyOS 希望提供半屏浮层Demo
0浏览 • 0回复 待解决
HarmonyOS 希望提供napi版的音频采集demo
246浏览 • 1回复 待解决
HarmonyOS 希望官方提供日历组件
328浏览 • 1回复 待解决
使用自定义弹窗实现分享弹窗
600浏览 • 1回复 待解决
HarmonyOS 录音,希望能有录音Demo
220浏览 • 1回复 待解决
HarmonyOS 全局弹窗demo
77浏览 • 1回复 待解决
HarmonyOS 希望实现数据统计报表Demo
0浏览 • 0回复 待解决
HarmonyOS 希望能有实现topBar效果的Demo
291浏览 • 1回复 待解决
HarmonyOS 希望优化自定义弹窗的使用
261浏览 • 1回复 待解决
HarmonyOS 弹窗不与页面绑定demo
280浏览 • 1回复 待解决
HarmonyOS提供AVRecorder demo示例
25浏览 • 1回复 待解决
HarmonyOS提供个路由跳转Demo
403浏览 • 1回复 待解决
提供Webview demo有哪些?
226浏览 • 1回复 待解决