【每日学点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%')
相关推荐
qq_273900231 分钟前
AF3 squeeze_features函数解读
人工智能·pytorch·深度学习·生物信息学
png9 分钟前
从零开始纯血鸿蒙天气预报-主界面(1)
harmonyos·arkui
城中的雾11 分钟前
鸿蒙开发者必看:如何用一行命令搞定HSP/HAP文件安装?
harmonyos
23zhgjx-zgx14 分钟前
OSPF:虚链路
网络·tcp/ip·华为·智能路由器·ensp
Wis4e2 小时前
基于PyTorch的深度学习5——神经网络工具箱
pytorch·深度学习·神经网络
Georgewu2 小时前
【HarmonyOS Next】鸿蒙应用弹框和提示气泡详解(一)
前端·华为·harmonyos
闲人编程2 小时前
调试与性能优化技巧
人工智能·pytorch·深度学习
今阳2 小时前
鸿蒙开发笔记-11-LazyForEach 数据懒加载
android·华为·harmonyos
T0uken3 小时前
【深度学习】Pytorch:更换激活函数
人工智能·pytorch·深度学习
张琪杭3 小时前
pytorch tensor创建tensor
人工智能·pytorch·python