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

【每日学点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://www.kler.cn/a/580031.html

相关文章:

  • FPGA|Verilog-SPI驱动
  • 群晖DS223 Docker搭建为知笔记
  • LLM中的transformer结构学习(二 完结 Multi-Head Attention、Encoder、Decoder)
  • STM32(G4)高级定时器的应用(计数模式)的原理
  • k8s启动时calico-kube-controllers与coredns组件一直是pending状态
  • 轻松解密 PDF 密码的实用方法
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14基础固定表头示例
  • Qt 元对象系统
  • Talking Head Review (数字人算法综述)
  • RabbitMq--消息可靠性
  • 【由技及道】量子跃迁部署术:docker+jenkins+Harbor+SSH的十一维交付矩阵【人工智障AI2077的开发日志011】
  • word甲烷一键下标
  • 学习笔记11——并发编程之并发关键字
  • DMA在STM32中的应用
  • 如何选择开源向量数据库
  • 6、通过husky规范commit提交信息
  • 软考 数据通信基础——信道
  • 坐落于杭州的电商代运营公司品融电商
  • 服务器租用:静态BGP和动态BGP分别指什么?
  • 脚本学习(1)验证目录自动化生成脚本