查询天气项目会遇到的问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本篇文章主要记录在编写天气查询项目时遇到的问题


一、如何将页面城市变化时,表头的城市也跟着变化(即黑色的和棕色城市一起改变)?

如图展示:
在这里插入图片描述

1.解决过程:

根据城市编号,调用getWeather方法,然后用所需要的集合进行接受,最后得到需要取得的结果
比如需要城市名字:cityName=result[i].forecasts[0].city
除此之外,当滑动时需要获取城市名称的编号

.onChange((index:number)=>{
  this.cityIndex=index
})

因为直接影响该行代码

Text(this.cityNameList[this.cityIndex])

这样就可以根据名称的编号再对棕色城市进行改变
添加索引


.tabBar(this.tabBuild(this.cityWeatherList.findIndex(obj=>obj===cityWeather)))

二、将近期的天气栏中的天气数据转化为图标并添加虚线

1.如图将近期的天气状况用数据表示出来

在这里插入图片描述
那么我们想将数据转化成图标,并将天气之间用线隔开

2.数据转化成图标代码如下:

 Column() {
  Text("近期天气查询").fontSize(26).margin({ top: 30 })
   Row() {
    ForEach(this.casts, (cast: casts) => {
      Column() {
        Text(cast.date.substring(5))
      this.weartherImage(cast.dayweather)
        Text(cast.daytemp.toString())
        Line()
          .width(20)
          .height(80)
          .startPoint([10, 0])
          .endPoint([10, 70])
          .stroke(Color.Black)
          .strokeWidth(3)
          .strokeDashArray([10, 3])


        Text(cast.nighttemp.toString())
        this.weartherImage(cast.nightweather)
      }
      .width("20%")
      .height("90%")
    })
  }
  .width("80%")
  .height("60%")
  .backgroundColor("#ffbab8b8")
  .opacity(0.5)
  .justifyContent(FlexAlign.SpaceAround)

}
.width("100%")
.height("45%")

3.天气之间用线隔开的代码:

@Builder weartherImage(weather:string){
   if (weather=== "晴")
    Image($r('app.media.sun')).width(30)

    if (weather === "阴")
      Image($r('app.media.cloud')).width(30)
    if (weather === "多云")
      Image($r('app.media.cloud')).width(30)
    if (weather .includes("雨") )
      Image($r('app.media.rain')).width(30)
  }

三、最终效果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值