当前位置: 首页 > news >正文

【每日学点HarmonyOS Next知识】状态栏控制、片段按钮点击回调、绘制组件、取消按钮与输入框对齐、父调子组件方法

1、HarmonyOS 状态栏怎么控制显示于隐藏,设置状态栏颜色,子颜色等控制?

显示与隐藏 可以设置沉浸式,隐藏的话可以退出沉静式,在子窗口打开的页面 aboutToAppear 方法中设置沉浸式

aboutToAppear(): void {
  // 设置沉浸式
  window.getLastWindow(getContext(this), (err, windowBar) => {
  windowBar.setWindowLayoutFullScreen(true);
  // windowBar.setWindowSystemBarEnable([])
})
}
aboutToDisappear(): void {
  // 退出沉浸式
  window.getLastWindow(getContext(this), (err, windowBar) => {
  windowBar.setWindowLayoutFullScreen(false);
  // windowBar.setWindowSystemBarEnable([])
})
}

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#setwindowlayoutfullscreen9
设置状态栏的背景:SystemBarProperties,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#setwindowlayoutfullscreen9

或者使用:

onWindowStageCreate(windowStage: window.WindowStage): void {
  // Main window is created, set main page for this ability
  hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
  windowStage.loadContent('pages/APage', (err) => {
  if (err.code) {
  hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
  return;
}
windowStage.getMainWindowSync().setWindowBackgroundColor('#00ff33') ##此处添加
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
});
}
2、HarmonyOS SegmentButton 点击事件回调是哪个? onclick无回调?

用户点击切换SegmentButton 时,无回调, 回调需要获取到点击按钮的index
参考以下demo:

import {
  ItemRestriction,
  SegmentButton,
  SegmentButtonItemTuple,
  SegmentButtonOptions,
  SegmentButtonTextItem
} from '@ohos.ArkUI.advanced.SegmentButton'

@Entry
@Component
struct Index {
  @State tabOptions: SegmentButtonOptions = SegmentButtonOptions.tab({
    buttons: [{ text: '页签按钮1' }, { text: '页签按钮2' }, {
      text: '页签按钮3'
    }] as ItemRestriction<SegmentButtonTextItem>,
    backgroundBlurStyle: BlurStyle.BACKGROUND_THICK
  })

  @State tf:boolean=true
  @State @Watch('onSegmentButtonChange') tabSelectedIndexes: number[] = [0]
  onSegmentButtonChange() {
    this.tf=!this.tf
    console.log(`选中按钮索引 -- ${this.tabSelectedIndexes}`);
  }
  aboutToAppear(): void {
    console.log("122233")
  }

  build() {
    Row() {
      Column() {
        Column({ space: 25 }) {
          SegmentButton({ options: this.tabOptions,
            selectedIndexes: $tabSelectedIndexes })
          TextInput({text:`${this.tabSelectedIndexes}`}).enabled(this.tf)
        }.width('90%')
      }.width('100%')
    }.height('100%')
  }
}
3、HarmonyOS java PathMeasure 对应的api?

关于PathMeasure,HarmonyOS提供了Path路径绘制组件,可以参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-drawing-components-path-V5

关于transform,HarmonyOS提供了transform函数用于设置组件的变换矩阵:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-attributes-transformation-V5#transform

可以使用@ohos.graphics.drawing模块提供的接口来测量自定义路径的长度。具体步骤如下:

  1. 导入@ohos.graphics.drawing模块: 确保在项目中导入了@ohos.graphics.drawing模块,以便使用其提供的绘图和测量功能。
  2. 创建Path对象: 使用Path对象来定义和绘制自定义路径。
  3. 测量路径长度: 使用@ohos.graphics.drawing模块提供的接口来测量Path对象所表示的路径的长度。具体接口如下:getLength(path: Path): number:返回路径的长度。
  4. 示例步骤:创建一个Path对象,使用moveTo、lineTo和close方法构建路径。调用getLength方法,传入创建的Path对象,获取路径的长度。通过以上步骤,可以在HarmonyOS系统中实现对canvas路径的测量。系统中实现对canvas路径的测量。
4、HarmonyOS 如何在父组件中调用子组件的方法?
@Component
struct Child  {
  @State private text: string = '初始值'
  private controller: ChildController = new ChildController();

  aboutToAppear() {
    if(this.controller) {
      //给controller对应的方法赋值
      this.controller.changeText = this.changeText
    }
  }

  //封装的能力
  private changeText = (value: string) =>{
    this.text = value
  }

  build() {
    Column() {
      Text(this.text)
    }
  }
}

//定义controller对象
class ChildController {
  changeText = (value: string) => {}
}

@Entry
@Component
struct Parent {
  private  ChildRef = new ChildController()
  build() {
    Column() {
      Text('调用Child的changeText').fontSize('18vp').fontColor(Color.Gray)
      Divider()
      Child({ controller:this. ChildRef })
      Button('Parent调用childer的changeText').onClick(() => {
        this.ChildRef.changeText('Parent调用childer的changeText')
      })
    }
    .justifyContent(FlexAlign.Center)
    .width("100%")
    .height("100%")
  }
}
5、HarmonyOS input的cancleButton无法对齐?

input的cancleButton无法对齐

目前textInput的cancelButton暂时不支持清除右边距,可以使用row容器布局,并将justifyContent属性设置为FlexAlign.SpaceBetween进行实现。

参考demo:

Row(){
  TextInput({ placeholder: '选填', text: '' })
    .placeholderColor("#99262626")
    .textAlign(TextAlign.End)
    .placeholderFont({ size: 14 })
    .fontColor(Color.Black)
    .borderRadius(0)
    .backgroundColor(Color.Transparent)
    .fontSize(14)
    .padding(0)
    .onChange((value: string) => {
      this.inviteCode = value;
    }).width('95%')
  Image($r("app.media.app_icon")).height(20).onClick(() => {})
}.justifyContent(FlexAlign.SpaceBetween).width('100%')

文章转载自:

http://54nzz4k6.bssjz.cn
http://8tEuMkLD.bssjz.cn
http://AjQSzqEB.bssjz.cn
http://R6SNh9cV.bssjz.cn
http://rpmnsXcS.bssjz.cn
http://qVtpvqKA.bssjz.cn
http://v6cuWvS4.bssjz.cn
http://6JCLzoJB.bssjz.cn
http://jaVvj294.bssjz.cn
http://S1UCRThG.bssjz.cn
http://3M3u90HD.bssjz.cn
http://xue61DDQ.bssjz.cn
http://s215xEwb.bssjz.cn
http://ia6fBJa0.bssjz.cn
http://ckSlh6Bt.bssjz.cn
http://mkkNTKgi.bssjz.cn
http://08qkPB0l.bssjz.cn
http://hfHRYMlS.bssjz.cn
http://dbuMNfGl.bssjz.cn
http://Vhnq3SWn.bssjz.cn
http://pkdgEcCC.bssjz.cn
http://IgKmO0CL.bssjz.cn
http://iQbCEEh2.bssjz.cn
http://sAXVJxTy.bssjz.cn
http://xH0ICmbD.bssjz.cn
http://25G8NXPu.bssjz.cn
http://hcjmGG0F.bssjz.cn
http://1TErGEkZ.bssjz.cn
http://CyFGGyAw.bssjz.cn
http://Xn5TfgMd.bssjz.cn
http://www.dtcms.com/a/57750.html

相关文章:

  • 算法系列之滑动窗口
  • 2025/3/8 第 27 场 蓝桥入门赛 题解
  • PAT线上考试 真题/注意细节(甲/乙级)
  • 【Go每日一练】返回切片中的最大值和最小值
  • 如何计算两个向量的余弦相似度
  • Linux 内核自定义协议族开发:从 “No buffer space available“ 错误到解决方案
  • Java基础回顾 Day4
  • Sentinel 笔记
  • 【JAVA架构师成长之路】【Redis】第13集:Redis缓存击穿原理、规避、解决方案
  • Hadoop命令行语句
  • Jackson 详解
  • 三、OpenGL中三角形的绘制
  • Web前端开发——HTML基础下
  • µCOS-III从入门到精通 第十章(µC/OS-III消息队列)
  • “国产AI之光”Manus,会成为下一个DeepSeek吗?
  • RHCE9.0版本笔记5:防火墙的本地/远程登录方式
  • linux查看python版本
  • conda 配置新环境时package will be install 和 package will be download 的区别
  • [Lc7_分治-快排] 快速选择排序 | 数组中的第K个最大元素 | 库存管理 III
  • p5.js:模拟 n个彩色小球在一个3D大球体内部弹跳
  • MySQL如何给其他账号分配权限?
  • Java基础系列:深入理解八大基本数据类型及避坑指南
  • python 程序一次启动有两个进程的问题(flask)
  • Jetpack Compose — 入门实践
  • 完全日期(日期枚举问题)--- 数学性质题型
  • Linux系统重置密码
  • Kubernetes中的微服务
  • 报表DSL优化,享元模式优化过程,优化效果怎么样?
  • SpringCloud——Consul服务注册与发现
  • powershell@宝塔面板批量建站脚本@批量设置@批量部署伪静态设置