|
|
|
|
# 界面开发
|
|
|
|
|
|
|
|
|
|
#### 开发布局思路
|
|
|
|
|
|
|
|
|
|
开发的最小单位是组件
|
|
|
|
|
|
|
|
|
|
基础组件:内容
|
|
|
|
|
|
|
|
|
|
容器组件:布局排版
|
|
|
|
|
|
|
|
|
|
```tsx
|
|
|
|
|
build(){
|
|
|
|
|
Column(){
|
|
|
|
|
Text('简介')
|
|
|
|
|
Row(){
|
|
|
|
|
Text('The one')
|
|
|
|
|
Text('The two')
|
|
|
|
|
Text('The there')
|
|
|
|
|
Text('The fore')
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 组件的属性方法
|
|
|
|
|
|
|
|
|
|
用于调整组件属性,美化外观,优化样式
|
|
|
|
|
|
|
|
|
|
```tsx
|
|
|
|
|
//
|
|
|
|
|
Text('简介')
|
|
|
|
|
.height(40)
|
|
|
|
|
.fontSize(20)
|
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 颜色设置
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
//设置颜色
|
|
|
|
|
.fontColor(颜色值)
|
|
|
|
|
枚举颜色:Color.颜色名
|
|
|
|
|
#开头的16进制颜色
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 文字溢出显示省略号、行高
|
|
|
|
|
|
|
|
|
|
```tsx
|
|
|
|
|
Text('')
|
|
|
|
|
.textOverflow({
|
|
|
|
|
overflow: TextOverflow.Ellipsis
|
|
|
|
|
})
|
|
|
|
|
.maxLines(2)
|
|
|
|
|
|
|
|
|
|
//行高
|
|
|
|
|
.lineHeight(数字)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### Image
|
|
|
|
|
|
|
|
|
|
```tsx
|
|
|
|
|
//网图加载
|
|
|
|
|
Image('图片网络链接')
|
|
|
|
|
|
|
|
|
|
//本地地址
|
|
|
|
|
Image($r('本地地址'))
|
|
|
|
|
//一般在 ./resources/base/medio/
|
|
|
|
|
Image($r('app.medio.图片名称'))
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 输入框与按钮
|
|
|
|
|
|
|
|
|
|
```tsx
|
|
|
|
|
//同一容器中间隙space
|
|
|
|
|
Column({space: 15}){
|
|
|
|
|
TextInput({
|
|
|
|
|
placeholder: '请输入用户名'
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
TextInput({
|
|
|
|
|
placeholder: '请输入密码'
|
|
|
|
|
}).type(InputType.Password)
|
|
|
|
|
|
|
|
|
|
Button('登录')
|
|
|
|
|
.width(200)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 居中
|
|
|
|
|
|
|
|
|
|
```tsx
|
|
|
|
|
Column(){
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
.width('100%')
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### svg图标(矢量图)
|
|
|
|
|
|
|
|
|
|
特点:任意缩放大小不失真,可以改颜色
|
|
|
|
|
|
|
|
|
|
```tsx
|
|
|
|
|
Image($r(''))
|
|
|
|
|
.fillColor(Color.Orange)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 布局元素的组成
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 内边距
|
|
|
|
|
- 外边距
|
|
|
|
|
- 边框
|
|
|
|
|
- 内容区域
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 内边距 padding
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
//总体设置
|
|
|
|
|
Text('内边距padding')
|
|
|
|
|
.padding(20)
|
|
|
|
|
|
|
|
|
|
//分别设置
|
|
|
|
|
Text('内边距padding')
|
|
|
|
|
.padding({
|
|
|
|
|
top: 10,
|
|
|
|
|
right: 20,
|
|
|
|
|
bottom: 40,
|
|
|
|
|
left: 80
|
|
|
|
|
})
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 外边距 margin
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Text('外边距margin')
|
|
|
|
|
.margin(20)
|
|
|
|
|
//分别设置同上
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 边框 border
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
.border({
|
|
|
|
|
width: 1,
|
|
|
|
|
color: Color.Red
|
|
|
|
|
style: BorderStyle.Dashed
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
//单边框,示例左边框。同理,颜色和样式也可以单独配置
|
|
|
|
|
.border({
|
|
|
|
|
width: {
|
|
|
|
|
left: 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 设置组件圆角
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Text('内边距padding')
|
|
|
|
|
.borderRadius(5)
|
|
|
|
|
.backgroundColor(Color.Blue)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 特殊圆角
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 正圆
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Text('正圆')
|
|
|
|
|
.width(100)
|
|
|
|
|
.height(100)
|
|
|
|
|
.borderRadius(50)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 胶囊按钮
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Text('正圆')
|
|
|
|
|
.width(50)
|
|
|
|
|
.height(50)
|
|
|
|
|
.borderRadius(25)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 背景
|
|
|
|
|
|
|
|
|
|
##### 背景图片基本引入
|
|
|
|
|
|
|
|
|
|
```tsx
|
|
|
|
|
Text('内容文本')
|
|
|
|
|
.width(200)
|
|
|
|
|
.height(100)
|
|
|
|
|
.backgroundColor(Color.Green)
|
|
|
|
|
.backgroundImage($r('app.media.cat'))
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 背景图片平铺
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Text('内容文本')
|
|
|
|
|
.width(200)
|
|
|
|
|
.height(100)
|
|
|
|
|
.backgroundColor(Color.Green)
|
|
|
|
|
.backgroundImage($r('app.media.cat'),ImageRepeat.XY)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 背景图片位置设置
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Text('内容文本')
|
|
|
|
|
.width(200)
|
|
|
|
|
.height(100)
|
|
|
|
|
.backgroundColor(Color.Pink)
|
|
|
|
|
.backgroundImage($r('app.media.cat'))
|
|
|
|
|
//.backgroundImagePosition({x: 50,y: 10})
|
|
|
|
|
.backgroundImagePosition(Alignment.Center)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注意:背景定位默认单位为 px 实际的物理像素点 对于不同设备显示会有不同
|
|
|
|
|
|
|
|
|
|
宽高默认单位 vp 虚拟像素,可以自动转换
|
|
|
|
|
|
|
|
|
|
转换方法:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
vp2px(数值)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 背景尺寸大小设置
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Text('内容文本')
|
|
|
|
|
.width(200)
|
|
|
|
|
.height(100)
|
|
|
|
|
.backgroundColor(Color.Pink)
|
|
|
|
|
.backgroundImage($r('app.media.cat'))
|
|
|
|
|
.backgroundImageSize(ImageSize.Cover)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 线性布局
|
|
|
|
|
|
|
|
|
|
Column & Row
|
|
|
|
|
|
|
|
|
|
##### 主轴对齐方式
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Column({space: 15}){
|
|
|
|
|
Text()
|
|
|
|
|
.width(200).height(100)
|
|
|
|
|
.backgroundColor(Color.Pink)
|
|
|
|
|
.border({width: 2})
|
|
|
|
|
Text()
|
|
|
|
|
.width(200).height(100)
|
|
|
|
|
.backgroundColor(Color.Pink)
|
|
|
|
|
.border({width: 2})
|
|
|
|
|
.margin(5)
|
|
|
|
|
Text()
|
|
|
|
|
.width(200).height(100)
|
|
|
|
|
.backgroundColor(Color.Pink)
|
|
|
|
|
.border({width: 2})
|
|
|
|
|
}
|
|
|
|
|
.width('100%')
|
|
|
|
|
.height('100%')
|
|
|
|
|
.backgroundColor('#ccc')
|
|
|
|
|
.justifyContent(FlexAlign.SpaceEvenly)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 交叉轴对齐方式
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
//对于Column
|
|
|
|
|
.alignItems(HorizontalAlign.Start)
|
|
|
|
|
//对于Row
|
|
|
|
|
.alignItems(VerticalAlign.Top)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 自适应伸缩
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
.layoutWeight(权重)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 弹性布局Flex
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Flex默认主轴水平往右,交叉轴垂直向下
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
//设置主轴方向、对齐方式、交叉轴对齐方式、布局换行(单行布局还是多行布局)
|
|
|
|
|
Flex({
|
|
|
|
|
direction: FlexDirection.Column,
|
|
|
|
|
justifyContent: FlexAlign.SpaceAround,
|
|
|
|
|
alignItems: ItemAlign.Stretch
|
|
|
|
|
wrap: FlexWrap.Wrap
|
|
|
|
|
}){
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 绝对定位
|
|
|
|
|
|
|
|
|
|
优势是灵活
|
|
|
|
|
|
|
|
|
|
参照父组件的左上角进行偏移
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Text('')
|
|
|
|
|
.position({
|
|
|
|
|
x: 0,
|
|
|
|
|
y: 0
|
|
|
|
|
})
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
调整组件层级
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
.zIndex(数字)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 层叠布局
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Stack(){
|
|
|
|
|
Text(){
|
|
|
|
|
.zIndex(3)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Text(){
|
|
|
|
|
.zIndex(4)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Text(){
|
|
|
|
|
.zIndex(5)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|