【每日学点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%')
相关推荐
小小小小小星2 小时前
鸿蒙开发之ArkUI框架进阶:从声明式范式到跨端实战
harmonyos·arkui
鸿蒙小灰2 小时前
鸿蒙开发对象字面量类型标注的问题
harmonyos
鸿蒙先行者2 小时前
鸿蒙Next不再兼容安卓APK,开发者该如何应对?
harmonyos
YF云飞5 小时前
.NET 在鸿蒙系统(HarmonyOS Next)上的适配探索与实践
华为·.net·harmonyos
Quarkn9 小时前
鸿蒙原生应用ArkUI之自定义List下拉刷新动效
list·harmonyos·arkts·鸿蒙·arkui
AlbertZein10 小时前
HarmonyOS5 凭什么学鸿蒙 —— Context详解
harmonyos
whysqwhw18 小时前
鸿蒙音频播放方式总结
harmonyos
whysqwhw18 小时前
鸿蒙音频录制方式总结
harmonyos
coding者在努力19 小时前
从零开始:用PyTorch实现线性回归模型
人工智能·pytorch·线性回归
zhanshuo20 小时前
HarmonyOS 实战:用 @Observed + @ObjectLink 玩转多组件实时数据更新
harmonyos