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
模块提供的接口来测量自定义路径的长度。具体步骤如下:
导入@ohos.graphics.drawing
模块: 确保在项目中导入了@ohos.graphics.drawing
模块,以便使用其提供的绘图和测量功能。- 创建Path对象: 使用Path对象来定义和绘制自定义路径。
- 测量路径长度: 使用
@ohos.graphics.drawing
模块提供的接口来测量Path对象所表示的路径的长度。具体接口如下:getLength(path: Path): number:返回路径的长度。 - 示例步骤:创建一个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%')