使用stack容器作为父容器,子容器使用image来实现自定义一个passwordIcon,此时即可对Image组件的位置、大小、颜色做出更改。@Entry @Component struct TextInputExample { @State text: string = '' @State changeType: InputType = InputType.Password @State isVisible: boolean = false @State changeState: boolean = false controller: TextInputController = new TextInputController() build() { Column() { Flex({ direction: FlexDirection.Row }) { Stack() { TextInput({ text: this.text, controller: this.controller }) .type(this.changeType) .placeholderFont({ size: 16, weight: 400 }) .showPasswordIcon(false) .width(336) .height(56) // 设置内间距让输入内容不超过图标位置 .padding({ right: 50 }) .onChange((value: string) => { this.text = value }) // Image覆盖passwordIcon实现 Image($r(this.isVisible ? 'app.media.visible' : 'app.media.Invisible')) .margin({ left: 280 // left: 200 }) .backgroundColor('#E7E8EA') .width(20) .height(20) .onClick(() => { this.changeState = !this.changeState this.isVisible = !this.isVisible if (this.changeState) { this.changeType = InputType.Normal } else { this.changeType = InputType.Password } }) } } }.width('100%').height('100%').backgroundColor('#F1F3F5') } }
使用stack容器作为父容器,子容器使用image来实现自定义一个passwordIcon,此时即可对Image组件的位置、大小、颜色做出更改。