動(dòng)態(tài)設(shè)置組件的屬性,支持開發(fā)者在屬性設(shè)置時(shí)使用if/else語法,且根據(jù)需要使用多態(tài)樣式設(shè)置屬性。
說明:
從API Version 11開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。
attributeModifier
attributeModifier(modifier:?AttributeModifier<T>)
動(dòng)態(tài)設(shè)置組件的屬性方法。
系統(tǒng)能力:?SystemCapability.ArkUI.ArkUI.Full
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
modifier | AttributeModifier<T> | 是 | 在當(dāng)前組件上,動(dòng)態(tài)設(shè)置屬性方法,支持使用if/else語法。 modifier: 屬性修改器,開發(fā)者需要自定義class實(shí)現(xiàn)AttributeModifier接口。 |
AttributeModifier<T>
開發(fā)者需要自定義class實(shí)現(xiàn)AttributeModifier接口。
applyNormalAttribute
applyNormalAttribute(instance: T) : void
組件普通狀態(tài)時(shí)的樣式。
applyPressedAttribute
applyPressedAttribute(instance: T) : void
組件按壓狀態(tài)的樣式。
applyFocusedAttribute
applyFocusedAttribute(instance: T) : void
組件獲焦?fàn)顟B(tài)的樣式。
applyDisabledAttribute
applyDisabledAttribute(instance: T) : void
組件禁用狀態(tài)的樣式。
applySelectedAttribute
applySelectedAttribute(instance: T) : void
組件選中狀態(tài)的樣式
開發(fā)者可根據(jù)需要自定義實(shí)現(xiàn)這些方法,通過傳入的參數(shù)識(shí)別組件類型,對(duì)instance設(shè)置屬性,支持使用if/else語法進(jìn)行動(dòng)態(tài)設(shè)置。
參數(shù):
參數(shù) | 描述 |
---|---|
instance | 組件的屬性類,用來標(biāo)識(shí)進(jìn)行屬性設(shè)置的組件的類型,比如Button組件的ButtonAttribute,Text組件的TextAttribute等。 |
instance參數(shù)支持范圍:
AlphabetIndexerAttribute、BadgeAttribute、BlankAttribute、ButtonAttribute、CalendarPickerAttribute、CanvasAttribute、CheckboxAttribute、CheckboxGroupAttribute、CircleAttribute、ColumnAttribute、ColumnSplitAttribute、ShapeAttribute、CommonAttribute、CounterAttribute、DataPanelAttribute、DatePickerAttribute、DividerAttribute、EffectComponentAttribute、EllipseAttribute、FlexAttribute、FlowItemAttribute、FormComponentAttribute、FormLinkAttribute、GaugeAttribute、GridAttribute、GridColAttribute、ColumnAttribute、GridItemAttribute、GridRowAttribute、HyperlinkAttribute、ImageAttribute、ImageAnimatorAttribute、ImageSpanAttribute、LineAttribute、ListAttribute、ListItemAttribute、ListItemGroupAttribute、LoadingProgressAttribute、MarqueeAttribute、MenuAttribute、MenuItemAttribute、MenuItemGroupAttribute、NavDestinationAttribute、NavigationAttribute、NavigatorAttribute、NavRouterAttribute、PanelAttribute、PathAttribute、PatternLockAttribute、PluginComponentAttribute、PolygonAttribute、PolylineAttribute、ProgressAttribute、QRCodeAttribute、RadioAttribute、RatingAttribute、RectAttribute、RefreshAttribute、RelativeContainerAttribute、RemoteWindowAttribute、RichEditorAttribute、RichTextAttribute、RowAttribute、RowSplitAttribute、ScrollAttribute、ScrollBarAttribute、SearchAttribute、SelectAttribute、ShapeAttribute、SideBarContainerAttribute、SliderAttribute、SpanAttribute、StackAttribute、StepperAttribute、StepperItemAttribute、SwiperAttribute、TabContentAttribute、TabsAttribute、TextAttribute、TextAreaAttribute、TextClockAttribute、TextInputAttribute、TextPickerAttribute、TextTimerAttribute、TimePickerAttribute、ToggleAttribute、UIExtensionComponentAttribute、VideoAttribute、WaterFlowAttribute、WebAttribute、XComponentAttribute
屬性支持范圍:
不支持入?yún)镃ustomBuilder或Lamda表達(dá)式的屬性,且不支持事件和手勢。
示例
// xxx.ets
class MyButtonModifier implements AttributeModifier<ButtonAttribute> {
isDark: boolean = false
applyNormalAttribute(instance: ButtonAttribute): void {
if (this.isDark) {
instance.backgroundColor(Color.Black)
} else {
instance.backgroundColor(Color.Red)
}
}
}
@Entry
@Component
struct attributeDemo {
@State modifier: MyButtonModifier = new MyButtonModifier()
build() {
Row() {
Column() {
Button("Button")
.attributeModifier(this.modifier)
.onClick(() => {
this.modifier.isDark = !this.modifier.isDark
})
}
.width('100%')
}
.height('100%')
}
}
// xxx.ets
class MyButtonModifier implements AttributeModifier<ButtonAttribute> {
applyNormalAttribute(instance: ButtonAttribute): void {
instance.backgroundColor(Color.Black)
}
applyPressedAttribute(instance: ButtonAttribute): void {
instance.backgroundColor(Color.Red)
}
}
@Entry
@Component
struct attributePressedDemo {
@State modifier: MyButtonModifier = new MyButtonModifier()
build() {
Row() {
Column() {
Button("Button")
.attributeModifier(this.modifier)
}
.width('100%')
}
.height('100%')
}
}
最后,有很多小伙伴不知道學(xué)習(xí)哪些鴻蒙開發(fā)技術(shù)?不知道需要重點(diǎn)掌握哪些鴻蒙應(yīng)用開發(fā)知識(shí)點(diǎn)?而且學(xué)習(xí)時(shí)頻繁踩坑,最終浪費(fèi)大量時(shí)間。所以有一份實(shí)用的鴻蒙(Harmony NEXT)資料用來跟著學(xué)習(xí)是非常有必要的。?
這份鴻蒙(Harmony NEXT)資料包含了鴻蒙開發(fā)必掌握的核心知識(shí)要點(diǎn),內(nèi)容包含了(ArkTS、ArkUI開發(fā)組件、Stage模型、多端部署、分布式應(yīng)用開發(fā)、音頻、視頻、WebGL、OpenHarmony多媒體技術(shù)、Napi組件、OpenHarmony內(nèi)核、Harmony南向開發(fā)、鴻蒙項(xiàng)目實(shí)戰(zhàn)等等)鴻蒙(Harmony NEXT)技術(shù)知識(shí)點(diǎn)。
希望這一份鴻蒙學(xué)習(xí)資料能夠給大家?guī)韼椭?,有需要的小伙伴自行領(lǐng)取,限時(shí)開源,先到先得~無套路領(lǐng)?。。?/strong>
?獲取這份完整版高清學(xué)習(xí)路線,請(qǐng)點(diǎn)擊→純血版全套鴻蒙HarmonyOS學(xué)習(xí)資料
鴻蒙(Harmony NEXT)最新學(xué)習(xí)路線
-
?HarmonOS基礎(chǔ)技能
-
HarmonOS就業(yè)必備技能?
- ?HarmonOS多媒體技術(shù)
- 鴻蒙NaPi組件進(jìn)階
- HarmonOS高級(jí)技能
-
初識(shí)HarmonOS內(nèi)核?
- 實(shí)戰(zhàn)就業(yè)級(jí)設(shè)備開發(fā)
有了路線圖,怎么能沒有學(xué)習(xí)資料呢,小編也準(zhǔn)備了一份聯(lián)合鴻蒙官方發(fā)布筆記整理收納的一套系統(tǒng)性的鴻蒙(OpenHarmony )學(xué)習(xí)手冊(cè)(共計(jì)1236頁)與鴻蒙(OpenHarmony )開發(fā)入門教學(xué)視頻,內(nèi)容包含:ArkTS、ArkUI、Web開發(fā)、應(yīng)用模型、資源分類…等知識(shí)點(diǎn)。
獲取以上完整版高清學(xué)習(xí)路線,請(qǐng)點(diǎn)擊→純血版全套鴻蒙HarmonyOS學(xué)習(xí)資料
《鴻蒙 (OpenHarmony)開發(fā)入門教學(xué)視頻》
《鴻蒙生態(tài)應(yīng)用開發(fā)V2.0白皮書》
《鴻蒙 (OpenHarmony)開發(fā)基礎(chǔ)到實(shí)戰(zhàn)手冊(cè)》
OpenHarmony北向、南向開發(fā)環(huán)境搭建
?《鴻蒙開發(fā)基礎(chǔ)》
- ArkTS語言
- 安裝DevEco Studio
- 運(yùn)用你的第一個(gè)ArkTS應(yīng)用
- ArkUI聲明式UI開發(fā)
- .……
?《鴻蒙開發(fā)進(jìn)階》
- Stage模型入門
- 網(wǎng)絡(luò)管理
- 數(shù)據(jù)管理
- 電話服務(wù)
- 分布式應(yīng)用開發(fā)
- 通知與窗口管理
- 多媒體技術(shù)
- 安全技能
- 任務(wù)管理
- WebGL
- 國際化開發(fā)
- 應(yīng)用測試
- DFX面向未來設(shè)計(jì)
- 鴻蒙系統(tǒng)移植和裁剪定制
- ……
《鴻蒙進(jìn)階實(shí)戰(zhàn)》
- ArkTS實(shí)踐
- UIAbility應(yīng)用
- 網(wǎng)絡(luò)案例
- ……
?獲取以上完整鴻蒙HarmonyOS學(xué)習(xí)資料,請(qǐng)點(diǎn)擊→純血版全套鴻蒙HarmonyOS學(xué)習(xí)資料
總結(jié)
總的來說,華為鴻蒙不再兼容安卓,對(duì)中年程序員來說是一個(gè)挑戰(zhàn),也是一個(gè)機(jī)會(huì)。只有積極應(yīng)對(duì)變化,不斷學(xué)習(xí)和提升自己,他們才能在這個(gè)變革的時(shí)代中立于不敗之地。?文章來源:http://www.zghlxwxcb.cn/news/detail-852281.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-852281.html
到了這里,關(guān)于鴻蒙Harmony應(yīng)用開發(fā)—ArkTS聲明式開發(fā)(通用屬性:動(dòng)態(tài)屬性設(shè)置)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!