

普通组件

 1,注意,如上图,build只能有一个根节点
 2,@Entry表示程序的入口
 @Component表示自定义的组件
 @Preview表示可以预览
 3,图片存放的地方
 
 4,
 Image组件最好只给宽度,给了高度又给宽度容易失真。
build() {
    Row() {
      //图片不需要写后缀
      Image($r('app.media.icon'))
        .width(300) //宽有两种写法,1是数字,而是百分比
        .height('40%') //百分比要带引号
        .borderRadius(400) //圆角
        .objectFit(ImageFit.Fill)//填充
        .interpolation(ImageInterpolation.High)//设置差值效果,High可以使图片更清晰
        .onClick(()=>{
          //点击事件
          console.log("我是点击事件")
        })
        .onComplete()//图片加载成功回调函数
        .onError()//图片加载异常的时候回调
    }
    .backgroundColor('green')
    .height('100%')
  }

 string资源要修改多处
 
 
     Text($r('app.string.module_desc'))
        .fontWeight(FontWeight.Bold)//fontWeight有两种写法
        // .fontWeight(400)//fontWeight这种写法,粗细默认是400,大于400就会加粗
    TextInput({
    //对象属性
         placeholder:'请输入用户名'
       }).width(400)

 Button组件里可以增加Image组件。

容器组件
1,Row
    Row({space:30}){//space表示间隙
        Text('赵云')
        Text('马超')
        Text('张飞')
        Text('黄忠')
      }.backgroundColor('green')
      .width('100%')
      .height(200)
      .justifyContent(FlexAlign.Center)//主轴方向上如何布局
      .alignItems(VerticalAlign.Bottom)//交叉轴的对齐方式
Cloumn
.alignItems(HorizontalAlign.End)
Column主轴的布局
 
 row主轴的布局

 弹性布局组件
 

 direction的取值有FlexDirection.Row、FlexDirection.RowReverse、FlexDirection.Column、FlexDirection.ColumnReverse
 效果图如下

 FlexWrap的取值有:FlexWrap.Wrap、FlexWrap.NoWrap、FlexWrap.WrapReverse
 效果如下图,1 2 3的宽度都是’50%’
 
 justifyContent与Column和Row相同
 alignItemsFlex
 如下图,三个高度不同的元素,取值分别是 ItemAlign.Auto,ItemAlign.Start,ItemAlign.Center,ItemAlign.End,ItemAlign.Stretch,ItemAlign.Baseline
 
 alignContent
 先看代码


进阶
Blank组件,类似于flutter的Spacer()填充空白区域


ForEach(
     item,
     (item:string)=>{
       Text(item)
     },
      //keyGenerator不要用默认的要自己定义,如何定义后面会更新,键生成函数,
      //为数组每一项生成一个唯一标识,组件是否重新渲染的判断标准
   )
arts中,数字等变量 非0非null为true



 divider,List的分割线
 onReachEnd:用来做上拉加载更多数据
 
 
 
 
 
 offset的用法

 order的用法

 order值越大,排的越靠前,值的越小,排的越靠后
 
 

 TabBar的Item可以做一个类,如下图
 



















