鸿蒙 ArkUI 入门:@State 状态与 Stack 层叠布局详解(附同心圆实战)
·
一、一句话分清 @State 和 Stack
先解决最关键的疑问:二者完全不是一类东西

1.@state
定义: Stack是ArkUI层叠布局容器,和Column(上下排列)、Row(左右排列)同级。内部所有子组件会重叠摆放,适合做同心圆、文字浮层、消息小红点等叠加效果。
@state发生改变,这个页面实时发生更新
堆叠顺序:先写的组件在底层,后写的组件在上层,后写的覆盖先写的
格式:@State 变量名: 类型 = 初始值;
例子:


我在TextInput文本框输入123,下边会自动写出123,以此来实现@state的实时更新
@Entry
@Component
struct StstesDemo1{
@State msg:string=""
build() {
Column({space:20}){
TextInput({text:this.msg,placeholder:"请输入信息"})
.height(50)
.width('100%')
.onChange((value:string)=>{
this.msg=value
})
Text("你输入的信息是:")
.height(50)
.width('100%')
.fontSize(20)
Text(this.msg)
.width('100%')
.padding(20)
.fontSize(30)
.backgroundColor(Color.Grey)
}
.width('100%')
.height('100%')
.padding(20)
}
}
2.stack层叠布局
定义:Stack 是层叠容器,内部所有子组件会重叠摆放:
堆叠顺序规则(最重要):先写的组件在底层,后写的组件在上层,后写的会盖住前面的Huawei Developer
以同心圆为例,

@Entry
@Component
struct CircleDemo {
build() {
Column() {
Stack() {
Stack()
.width(200)
.height(200)
.backgroundColor(Color.Grey)
.borderRadius(100)
Stack()
.width(120)
.height(120)
.backgroundColor(Color.Black)
.borderRadius(60)
}
.width(150)
.height(150)
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}更多推荐



所有评论(0)