OpenHarmony开发者论坛

标题: Scroll无法滚动的问题 [打印本页]

作者: linyu    时间: 2024-3-6 14:28
标题: Scroll无法滚动的问题
[md]问题描述:我使用List作为父组件,ListItem为子组件,Column作为孙子组件,同时Column占据的大小和ListItem一样,这个时候如果我运行程序,发现手指触摸到Column的区域将无法触发滚动效果。如果把Column的区域改的小一点,手指通过触摸ListItem的区域就可以触发滚动效果


吐槽:所有的例子都是使用Text作为孙子组件,而Text的大小又比较小,所以滚动效果好,而使用占据控件较大的Column组件则滚动效果不佳。。。
[/md]
作者: 深开鸿_王石    时间: 2024-3-7 09:21
提供个代码看看呢?
作者: linyu    时间: 2024-3-7 19:09
回复 深开鸿_王石: import { BaseNote } from '../../orm/BaseNote';
import { convert2Date } from '../../util/tool';

@Component
export struct Notes {
  @LocalStorageLink('notes')
  notes: BaseNote[] = [];

  // scroller: Scroller = new Scroller()

  aboutToAppear() {
    console.log("notes size is " + this.notes.length)
  }

  build() {
    Scroll() {
      // Flex({ direction: FlexDirection.Column }) {
      Column() {
        List({ space: 20 }) {
          ForEach(this.notes, (item: BaseNote) => {
            ListItem() {
              // Flex({ direction: FlexDirection.Column }) {
              Column() {
                ColumnSplit() {
                  Text(item.title)
                    .maxLines(1)
                    .padding({bottom: 16, left: 16, top: 16})
                    .width('100%')
                  Text(convert2Date(item.timestamp).toString())
                    .maxLines(1)
                    .padding({bottom: 16, left: 16, top: 16})
                    .width('100%')
                  Text(item.body)
                    .width("100%")
                    .borderRadius(15)
                    .fontSize(16)
                    .padding({bottom: 16, left: 16, top: 16})
                }
              }
              .backgroundColor(Color.White)
            }
            .width("100%")
            .backgroundColor(Color.Blue)
          }, (item: BaseNote) => item.id.toString())
        }
        .width("100%")
        .friction(0.6)
        .borderWidth(1)
        .margin(20)
        .edgeEffect(EdgeEffect.Spring)
        .nestedScroll({
          scrollForward: NestedScrollMode.PARENT_FIRST,
          scrollBackward: NestedScrollMode.SELF_FIRST
        })
      }
      .width('100%')
    }
    .edgeEffect(EdgeEffect.Spring)
    .scrollBar(BarState.Off)
  }
}
作者: 深开鸿_王石    时间: 2024-3-11 09:22
标题: Scroll无法滚动的问题
[md]我改了点,给columnsplit加了背景色,如下图,红色区域滑动没反应,,白色就行,这应该是comunsplit的问题咯,查了下这个容器有以下属性,这东西在拦截滑动事件,所以目前看别用columnsplit为好,加分割弄个border就好了,或者margin加背景色,好多法子呢,

| resizeable | boolean | 分割线是否可拖拽,默认为false。 |
| ---------- | ------- | ------------------------------- |

```
           ListItem() {
              // Flex({ direction: FlexDirection.Column }) {
              Column() {
                ColumnSplit() {
                  Text('T'+item)
                    .maxLines(1)
                    .padding({bottom: 16, left: 16, top: 16})
                    .width('100%')
                  Text('B'+item)
                    .maxLines(1)
                    .padding({bottom: 16, left: 16, top: 16})
                    .width('100%')
                  Text('E'+item)
                    .width("100%")
                    .borderRadius(15)
                    .fontSize(16)
                    .padding({bottom: 16, left: 16, top: 16})
                }
                .backgroundColor(Color.Red)
              }
              .backgroundColor(Color.White)
            }
            .width("100%")
            .backgroundColor(Color.Blue)ColumnSplit
```

![image.png](https://forums-obs.openharmony.c ... zwva63366wwsav6.png "image.png")
[/md]
作者: linyu    时间: 2024-3-11 14:55
回复 深开鸿_王石: 谢谢大佬!我也试过染色,我还以为是Column的原因。。。还要继续修行呀




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5