黑马健康APP——记录列表和食物列表页

一.思路分析

本次实验的内容主要是完成饮食记录页面的UI 设计的的下部饮食列表的设计,大致思路是使用LIST组件来实现,并在其中使用Foreach来进行循环,从而实现饮食列表信息的显示,当用户点击早餐或其他时,便会跳转到对应的食物列表页,对于食物列表页的实现,相对而言比较简单,只要是一个铺满全屏的列示布局以及Tabs的搭配使用。

二.运行截图

三.设计中遇到的问题

如何实现食物列表

解决方法:

首先使用Column()容器,设计出一个放置列表的位置,然后使用row容器放置每一栏开头的文字,随后使用ListItem容器,将Column()容器中所有的信息,放置于ListItem容器中,从而达到列表项的目的,再放置完所有的文本信息后,可以再ListItem容器外面使用Foreach循环,将所有的信息进行一个循环,从而实现四个食物列表项。此外,可以使用margin属性,来调节卡片距离顶部的距离。对组内记录列表的实现,与上面类似,大致都是首先定义一个,然后使用Foreach循环来进行处理。

四.代码

import { CommonConstants } from '../../common/constants/CommonConstants'

@Extend(Text) function grayText(){
  .fontSize(14)
  .fontColor($r('app.color.light_gray'))
}

@Component
 export default struct RecordList {
  build() {
    List({space:CommonConstants.SPACE_10}){
      ForEach([1,2,3,4,5],(item) => {
        ListItem(){
          Column(){
            // 1.分组的标题
            Row({space:CommonConstants.SPACE_4}){
              Image($r('app.media.ic_breakfast'))
                .width(24)
              Text('早餐')
                .fontSize(18)
                .fontWeight(CommonConstants.FONT_WEIGHT_700)
              Text('建议423-592千卡')
                .grayText()
              Blank()
              Text('190')
                .fontSize(14)
                .fontColor($r('app.color.primary_color'))
              Text('千卡')
                .grayText()
              Image($r('app.media.ic_public_add_norm_filled'))
                .width('20')
                .fillColor($r('app.color.primary_color'))
            }
            .width('100%')
            // 2.组内记录列表
           List(){
             ForEach([1,2],(item) => {
               ListItem(){
                 Row({space:CommonConstants.SPACE_6}){
                   Image($r('app.media.toast'))
                     .width(50)
                   Column({space:CommonConstants.SPACE_4}){
                     Text('全麦吐司')
                       .fontWeight(CommonConstants.FONT_WEIGHT_500)
                     Text('1片')
                       .grayText()
                   }
                   Blank()
                   Text('91千卡')
                     .grayText()
                 }
                 .width('100%')
                 .padding(CommonConstants.SPACE_6)
               }.swipeAction({end: this.deleteButton.bind(this)})
             })
           }
            .width('100%')
          }
          .width('100%')
          .backgroundColor(Color.White)
          .borderRadius(CommonConstants.DEFAULT_18)
          .padding(CommonConstants.SPACE_12)
        }
      })
    }
    .width(CommonConstants.THOUSANDTH_940)
    .margin({top: 10})
    .height('100%')
  }

  @Builder deleteButton(){
    Image($r('app.media.ic_public_delete_filled'))
      .width(20)
      .fillColor(Color.Red)
      .margin(5)
  }

}

import { CommonConstants } from '../common/constants/CommonConstants'
import router from '@ohos.router'
import ItemList from '../view/item/ItemList'
import ItemPanelHeader from '../view/item/ItemPanelHeader'
import ItemCard from '../view/item/ItemCard'
import NumberKeyboard from '../view/item/NumberKeyboard'
@Entry
@Component
struct ItemIndex {
  @State amount: number = 1
  @State showPanel: boolean = false
  @State value: string = ''

  onPanelShow(){
    this.amount = 1
    this.value = ''
    this.showPanel = true
  }

    build() {
      Column() {
        // 1.头部导航
          this.header()
        // 2.列表
       ItemList({showPanel: this.onPanelShow.bind(this)})
        .layoutWeight(1)
        // 3.底部面板
        Panel(this.showPanel){
          // 3.1 顶部日期
          ItemPanelHeader()
          // 3.2 记录卡片
          ItemCard({amount: this.amount})
          // 3.3 数字键盘
          NumberKeyboard({amount: $amount, value: $value})
          // 3.4 按钮
          Row({space: CommonConstants.SPACE_6}){
            Button('取消')
              .width(120)
              .backgroundColor($r('app.color.light_gray'))
              .type(ButtonType.Normal)
              .borderRadius(6)
              .onClick(() => this.showPanel = false)
            Button('提交')
              .width(120)
              .backgroundColor($r('app.color.primary_color'))
              .type(ButtonType.Normal)
              .borderRadius(6)
              .onClick(() => this.showPanel = false)
          }
              .margin({top: 10})

        }
        .mode(PanelMode.Full)
        .dragBar(false)
        .backgroundMask($r('app.color.light_gray'))
        .backgroundColor(Color.White)
      }
      .width('100%')
      .height('100%')
  }

  @Builder header(){
    Row(){
      Image($r('app.media.ic_public_back'))
        .width(24)
        .onClick(() => router.back())
      Blank()
      Text('早餐').fontSize(18).fontWeight(CommonConstants.FONT_WEIGHT_600)
    }
    .width(CommonConstants.THOUSANDTH_940)
    .height(32)
  }
}

五.总结

本次实验主要完成了记录列表以及食物列表页的设计,记录列表的实现主要是通过ListItem来实现列表以及使用Foreach()循环来进行复制,从而达到该效果,食物记录列表页的实现,主要是使用列式布局,以及Tabs组件大搭配使用,来实现该效果。

黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发】黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值