HarmonyOS 鸿蒙Next 按压态设置失效

发布于 1周前 作者 bupafengyu 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 按压态设置失效

    Text(item.emoji + item.title)
.backgroundColor("#f5f5f5")
.borderRadius(8)
.fontColor("#555555")
.fontSize(13)
.stateStyles({
pressed: {
.backgroundColor(Color.Black)
},
})

这个按压态为什么不生效呢?还是说需要调用ontouch方法进行操作?


更多关于HarmonyOS 鸿蒙Next 按压态设置失效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  @State num: number[] = [1, 2, 3, 4, 5, 6,7,8];
  scroller: Scroller = new Scroller()
  scrollTimer: number = 0
  private xlength: number = 0

  build() {
    Navigation() {
      this.recommendWordContent()
    }
    .hideTitleBar(true)
    .onAppear(() => {
      this.startScroll()
    }).onDisAppear(() => {
      this.stopScroll()
    }).onNavBarStateChange((visible) => {
      if (visible) {
        this.startScroll()
      } else {
        this.stopScroll()
      }
    })
  }

  @Builder
  recommendWordContent() {
    WaterFlow({ scroller: this.scroller }) {
      ForEach(this.num, (item: number, index: number) => {
        FlowItem() {
          this.recommendWordItem(item)
          // this.recommendWordItem(3)
        }
      })
    }
    .layoutDirection(FlexDirection.Row)
    .rowsTemplate("1fr")
    .id('recommendWord')
    .alignRules({
      center: { anchor: '__container__', align: VerticalAlign.Center },
      start: { anchor: '__container__', align: HorizontalAlign.Start },
      end: { anchor: '__container__', align: HorizontalAlign.End }
    })
    .offset({ y: "7%" })
    .height(120)
  }

  @Builder
  recommendWordItem(item: number) {
    Text(item.toString())
      .backgroundColor("#f5f5f5")
      .borderRadius(8)
      .height(36)
      .fontColor("#555555")
      .fontSize(13)
      .padding({
        top: 9,
        bottom: 9,
        left: 12,
        right: 12
      })
      .margin(6)
      .onClick(() => {
      })
      .stateStyles({
        pressed: {
          .backgroundColor(Color.Black)
          // .fontColor(Color.Red)
        },
      })
  }

  private startScroll() {
    if (this.scrollTimer>0){
      clearInterval(this.scrollTimer)
    }
    this.scrollTimer = setInterval(() => {
      if (this.scroller.isAtEnd()) {
        this.xlength = -0.2
      } else if (this.scroller.currentOffset()?.xOffset == 0) {
        this.xlength = 0.2
      }
      this.scroller.scrollBy(this.xlength, 0)
    }, 20)

  }

  private stopScroll() {
    if (this.scrollTimer > 0) {
      clearInterval(this.scrollTimer)
    }
  }
}

更多关于HarmonyOS 鸿蒙Next 按压态设置失效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我把你的demo的数组长度变短了,在同一个屏幕上没有滚动的时候按压是有效的,应该是滚动起来是否按压判断不好判断。
正常text设置没问题,也不知道是瀑布流还是懒加载的原因,加上就失败了
cke_1374.png

在HarmonyOS(鸿蒙)系统中,按压态设置失效可能源于多个因素,包括但不限于以下几个方面:

  1. 事件监听未正确设置:确保按压事件(如onPressonLongPress)已在组件上被正确监听和注册。

  2. 样式定义缺失:按压态通常需要特定的样式定义,如背景色变化,检查是否在CSS或样式文件中定义了这些按压态样式。

  3. 组件属性限制:部分组件可能不支持按压态,或按压态的启用有特定条件,查阅官方文档确认组件支持情况。

  4. 系统或版本问题:确认你的HarmonyOS系统版本是否支持按压态功能,以及是否存在已知的bug。

  5. 冲突或覆盖:其他样式或脚本可能覆盖了按压态设置,检查是否有全局样式或脚本影响了按压态表现。

  6. 父组件影响:父组件的某些属性或样式可能阻止了子组件按压态的触发,检查父组件的相关设置。

解决上述问题后,如果按压态设置仍然失效,请直接联系官网客服进行进一步排查。官网地址是:https://www.itying.com/category-93-b0.html ,他们将提供更专业的技术支持和解决方案。

回到顶部