# 3.3:位置设置
# 3.3.1:绝对定位
declare class CommonMethod<T> {
position(value: Position): T;
}
1
2
3
2
3
设置当前组件在父组件中的位置,参照点为父容器顶点位置。在布局容器中,设置该属性不影响父容器布局,仅在绘制时进行位置调整。
简单样例如下所示:
@Entry @Component struct Index {
build() {
Column({ space: 10 }) {
Row({space: 10}) {
Text('1')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#aabbcc")
Text('2')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#bbccaa")
Text('3')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#ccaabb")
}
.width('90%')
.backgroundColor(Color.Pink)
Row({space: 10}) {
Text('1')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#aabbcc")
.position({ // 使用绝对定位,设置组件位置
x: 220,
y: 0
})
Text('2')
.height(50)
.width(220)
.fontSize(16)
.backgroundColor("#bbccaa")
Text('3')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#ccaabb")
}
.width('90%')
.height(160)
.backgroundColor(Color.Pink)
}
.width('100%')
.height("100%")
.padding(10)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
@Entry @Component class MyView {
func build() {
Column(10) {
Row(10) {
Text("1")
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xaabbcc)
Text("2")
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xbbccaa)
Text("3")
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xccaabb)
}
.width(90.percent)
.backgroundColor(0xffc0cb)
Row(10) {
Text("1")
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xaabbcc)
.position( // 使用绝对定位,设置组件位置
x: 220,
y: 0
)
Text("2")
.height(50)
.width(220)
.fontSize(16)
.backgroundColor(0xbbccaa)
Text("3")
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xccaabb)
}
.width(90.percent)
.height(160)
.backgroundColor(0xffc0cb)
}
.width(100.percent)
.height(100.percent)
.padding(10)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
样例运行结果如下图所示:
📢:由运行结果可知,postion
属性会更改子组件的布局结构
# 3.3.2:相对定位
declare class CommonMethod<T> {
align(value: Alignment): T;
}
1
2
3
2
3
设置元素内容的对齐方式,只有当设置的 width
和 height
大小超过元素本身内容大小时生效。
简单样例如下所示:
Column({ space: 10 }) {
Row({space: 10}) {
Text('1')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#aabbcc")
Text('2')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#bbccaa")
Text('3')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#ccaabb")
}
.width('90%')
.height(70)
.backgroundColor(Color.Pink)
Row({space: 10}) {
Text('1')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#aabbcc")
.offset({ // 使用相对定位,设置组件位置
x: 10,
y: 10
})
Text('2')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#bbccaa")
Text('3')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#ccaabb")
}
.width('90%')
.height(70)
.backgroundColor(Color.Pink)
}
.width('100%')
.height("100%")
.padding(10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@Entry @Component class MyView {
func build() {
Column(10) {
Row(10) {
Text('1')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xaabbcc)
Text('2')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xbbccaa)
Text('3')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xccaabb)
}
.width(90.percent)
.height(70)
.backgroundColor(0xffc0cb)
Row(10) {
Text('1')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xaabbcc)
.offset( // 使用相对定位,设置组件位置
x: 10,
y: 10
)
Text('2')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xbbccaa)
Text('3')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xccaabb)
}
.width(90.percent)
.height(70)
.backgroundColor(0xffc0cb)
}
.width(100.percent)
.height(100.percent)
.padding(10)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
样例运行结果如下图所示:
📢:由运行结果可知,offset
属性只更改组件自身的布局结构。
# 3.3.3:锚点设置
declare class CommonMethod<T> {
markAnchor(value: Position): T;
}
1
2
3
2
3
设置元素在位置定位时的锚点,以自身顶点位置作为基准点进行偏移。设置该属性,不影响父容器布局,仅在绘制时进行位置调整。
简单样例如下所示:
Column({ space: 10 }) {
Row({space: 10}) {
Text('1')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#aabbcc")
Text('2')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#bbccaa")
Text('3')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#ccaabb")
}
.width('90%')
.height(70)
.backgroundColor(Color.Pink)
Row({space: 10}) {
Text('1')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#aabbcc")
.markAnchor({ // 设置锚点
x: 10,
y: 10
})
Text('2')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#bbccaa")
Text('3')
.height(50)
.width('25%')
.fontSize(16)
.backgroundColor("#ccaabb")
}
.width('90%')
.height(70)
.backgroundColor(Color.Pink)
}
.width('100%')
.height("100%")
.padding(10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@Entry @Component class MyView {
func build() {
Column(10) {
Row(10) {
Text('1')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xaabbcc)
Text('2')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xbbccaa)
Text('3')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xccaabb)
}
.width(90.percent)
.height(70)
.backgroundColor(0xffc0cb)
Row(10) {
Text('1')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xaabbcc)
.markAnchor( // 设置锚点
x: 10,
y: 10
)
Text('2')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xbbccaa)
Text('3')
.height(50)
.width(25.percent)
.fontSize(16)
.backgroundColor(0xccaabb)
}
.width(90.percent)
.height(70)
.backgroundColor(0xffc0cb)
}
.width(100.percent)
.height(100.percent)
.padding(10)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
样例运行结果如下图所示:
📢:由运行结果可知,markAnchor
属性只更改组件自身的布局结构。
请作者喝杯咖啡
©arkui.club版权所有,禁止私自转发、克隆网站。