HarmonyOS 鸿蒙Next中【快应用】list-item组件的正确隐藏

HarmonyOS 鸿蒙Next中【快应用】list-item组件的正确隐藏 【关键词】

  • list组件 if/show

【问题背景】

list组件中给list-item使用show属性后,再设置为false后,会有一个空白位置留出,感觉位置好像还是被占据着,这种情形我们该如何处理?

如下图所示:

cke_336.png

cke_790.png

【问题原因】

引擎list组件的实现就是这样的,show为false时只是将控件设置为隐藏,dom树中并未删除,所以在list-item中仍会留着所占有的空间。建议使用if来进行规避。

【解决方案】

将原来的show改为if。

截图:

cke_3679.png

完整ux代码:

<template>
  <div class="container">
    <list class="list" id="list">
      <list-item type="listItem" class="item" if="{{display}}">
        <text class="txt">first listItem</text>
      </list-item>
      <list-item type="listItem" class="item item-color" for="{{listAdd}}">
        <text class="txt">{{ $item }}--{{ $idx }}</text>
      </list-item>
    </list>
  </div>
</template>

<script>
  module.exports = {
    data: {
      loadMore: true,
      listAdd: ['A', 'B', 'C'],
      scrollPage: false,
      display: false,
    },
    onInit() {
      this.$page.setTitleBar({ text: '' })
    }
  }
</script>

<style>
  .list {
    height: 1000px;
    padding-left: 60px;
    padding-right: 60px;
    border-color: #ff0000;
    border-width: 5px;
  }
  .container {
    flex: 1;
    flex-direction: column;
  }
  .item {
    height: 150px;
    align-items: flex-start;
    margin-bottom: 15px;
    border-color: #9400d3;
    border-width: 5px;
    margin-right: 20px;
  }
  .item-color {
    background-color: #f76160;
  }
</style>

更多关于HarmonyOS 鸿蒙Next中【快应用】list-item组件的正确隐藏的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next中【快应用】list-item组件的正确隐藏的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,隐藏list-item组件可以通过以下几种方式实现:

  1. 设置visibility属性:将list-itemvisibility属性设置为hidden,可以隐藏组件但保留其占位空间。

    <list-item visibility="hidden"></list-item>
    
  2. 设置display属性:将list-itemdisplay属性设置为none,可以完全隐藏组件且不占位。

    <list-item display="none"></list-item>
    
  3. 动态控制:通过JavaScript动态控制list-item的显示与隐藏。

    this.$element('listItemId').setAttribute('display', 'none');
    

根据需求选择合适的方式,确保隐藏效果符合预期。

回到顶部