HarmonyOS 鸿蒙Next List组件展示问题

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next List组件展示问题

在使用List组件的时候,如果没有添加layoutWeight()属性会出现List最后一列展示不全,但是如果给了layoutWeight()又会占满这个区域,想问下,如果想实现这样的效果,如何处理?

2 回复

不要给弹窗设置高度,展示的tag数据设置固定高度,

// xxx.ets

import { OrderItem, OrderList } from '../model/Main';

[@CustomDialog](/user/CustomDialog)

struct CustomDialogExample {

  controller?: CustomDialogController

  [@State](/user/State) text: string = ''

  private TextAreaController: TextAreaController = new TextAreaController()

  cancel: () => void = () => {

  }

  confirm: () => void = () => {

  }

  build() {

    Column() {

      Text('评价')

        .fontSize(20)

        .height(50)

      Column() {

        List() {

          ForEach(OrderList, (item: OrderItem, index: number) => {

            ListItem() {

              Column() {

                  Text(item.title).fontColor('#ff3b3a3a')

              }

              .width(140)

              .height(40)

              .borderRadius(5)

              .borderWidth(1)

              .borderColor('#ff3b3a3a')

              .justifyContent(FlexAlign.Center)

              .alignItems(HorizontalAlign.Center)

            }.margin({

              top: 20,

            })

          }, (item: OrderItem) => JSON.stringify(item));

        }

        .flexGrow(1)

        .clip(true)

        .lanes(2)

        TextArea({

          text: this.text,

          placeholder: '请输入....',

          controller: this.TextAreaController

        })

          .placeholderFont({ size: 16, weight: 400 })

          .width('100%')

          .height(56)

          .margin(20)

          .fontSize(16)

          .borderWidth(1)

          .margin({top:30})

          .fontColor('#182431')

          .backgroundColor('#FFFFFF')

          .onChange((value: string) => {

            this.text = value

          })

        Column(){

          Text('立即提交').fontColor('#fff').fontSize(20)

        }.width('100%').height(50).margin({top:20}).backgroundColor('#ccc').borderRadius(7).justifyContent(FlexAlign.Center)

      }.width('90%')

      .margin({bottom:30})

    }.width('90%')

  }

}

[@Entry](/user/Entry)

[@Component](/user/Component)

struct CustomDialogUser {

  dialogController: CustomDialogController | null = new CustomDialogController({

    builder: CustomDialogExample({

      cancel: () => {

        this.onCancel()

      },

      confirm: () => {

        this.onAccept()

      }

    }),

    cancel: this.existApp,

    autoCancel: true,

    onWillDismiss: (dismissDialogAction: DismissDialogAction) => {

      console.info("reason=" + JSON.stringify(dismissDialogAction.reason))

      console.log("dialog onWillDismiss")

      if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {

        dismissDialogAction.dismiss()

      }

      if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {

        dismissDialogAction.dismiss()

      }

    },

    alignment: DialogAlignment.Center,

    offset: { dx: 0, dy: -20 },

    customStyle: false,

    width: '100%',

    borderWidth: 1,

    borderStyle: BorderStyle.Dashed,

    borderColor: Color.Blue, 

    backgroundColor: Color.White,

  })

  // 在自定义组件即将析构销毁时将dialogController置空

  aboutToDisappear() {

    this.dialogController = null // 将dialogController置空

  }

  onCancel() {

    console.info('Callback when the first button is clicked')

  }

  onAccept() {

    console.info('Callback when the second button is clicked')

  }

  existApp() {

    console.info('Click the callback in the blank area')

  }

  build() {

    Column() {

      Button('click me')

        .onClick(() => {

          if (this.dialogController != null) {

            this.dialogController.open()

          }

        }).backgroundColor(0x317aff)

    }.width('100%').margin({ top: 5 })

  }

}

model/Main文件:

export interface OrderItem {

  id: string;

  title: string;

}

export const OrderList: OrderItem[] = [

  {

    id: '1',

    title: '系统推送人性化',

  },

  {

    id: '2',

    title: '系统推送人性化',

  },

  {

    id: '3',

    title: '系统推送人性化',

  },

  {

    id: '4',

    title: '系统推送人性化',

  },

  {

    id: '3',

    title: '系统推送人性化',

  },

  {

    id: '4',

    title: '系统推送人性化',

  },

];

更多关于HarmonyOS 鸿蒙Next List组件展示问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS鸿蒙Next List组件展示问题,以下是可能的解决方案:

  1. 数据绑定检查: 确保数据源已正确绑定到List组件。检查数据源是否为空或格式错误,这可能导致List组件无法正常展示。

  2. 组件属性配置: 仔细核对List组件的各类属性配置,如item_provider、item_count等,确保它们已按需求正确设置。错误的属性配置会影响组件的展示效果。

  3. 布局文件审查: 检查List组件的布局文件,确保布局结构正确,且子组件的样式、位置等属性设置无误。错误的布局可能导致List展示异常。

  4. 事件处理: 若List组件涉及事件处理,如点击、滑动等,需确认相关事件监听器已正确注册,且事件处理逻辑无误。

  5. 版本兼容性: 确认所使用的HarmonyOS版本与List组件的兼容性。某些新特性或修复可能仅在特定版本后支持。

  6. 日志分析: 查看应用运行时的日志信息,分析是否有与List组件相关的错误或警告信息,这有助于定位问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部