HarmonyOS 鸿蒙Next如何获取一个控件底部距离手机屏幕顶部的距离

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

HarmonyOS 鸿蒙Next如何获取一个控件底部距离手机屏幕顶部的距离

参考一下onAreaChange看是否满足需求

@Entry

@Component

struct AreaExample {

  @State value: string = ‘Text’

  @State sizeValue: string = ‘’

  build() {

    Column() {

      Text(“this.message”)

        .fontSize(10)

        .fontWeight(FontWeight.Bold)

        .onAreaChange((oldValue: Area, newValue: Area) => {

          console.info(‘距离屏幕顶部的距离:’, newValue.globalPosition.y)

        })

        .margin(160)

    }

    .width(‘100%’).height(‘100%’)

  }

}

文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-component-area-change-event-V5#onareachange


更多关于HarmonyOS 鸿蒙Next如何获取一个控件底部距离手机屏幕顶部的距离的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
```

,参考一下onAreaChange看是否满足需求

[@Entry](/user/Entry)

@Component

struct AreaExample {

  @State value: string = ‘Text’

  @State sizeValue: string = ‘’

  build() {

    Column() {

      Text(“this.message”)

        .fontSize(10)

        .fontWeight(FontWeight.Bold)

        .onAreaChange((oldValue: Area, newValue: Area) => {

          console.info(‘距离屏幕顶部的距离:’, newValue.globalPosition.y)

        })

        .margin(160)

    }

    .width(‘100%’).height(‘100%’)

  }

}

文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-component-area-change-event-V5#onareachange


,加上组件自身的高度即可

@Entry

@Component

struct AreaExample {

  @State value: string = ‘Text’

  build() {

    Column() {

      Text(“this.message”)

        .fontSize(10)

        .fontWeight(FontWeight.Bold)

        .onAreaChange((oldValue: Area, newValue: Area) => {

          console.info(‘组件距离屏幕顶部的距离:’, Number(newValue.globalPosition.y)+Number(newValue.height))

        })

        .margin(160)

    }

    .width(‘100%’).height(‘100%’)

  }

}

更多关于HarmonyOS 鸿蒙Next如何获取一个控件底部距离手机屏幕顶部的距离的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,获取一个控件底部距离手机屏幕顶部的距离,可以通过控件自身的布局参数和屏幕信息来计算。具体步骤如下:

  1. 获取控件的顶部边界位置: 使用getComponentLocation()方法获取控件在父布局中的位置,该方法返回一个Rect对象,包含控件的左、上、右、下边界位置。

  2. 获取屏幕的高度: 使用WindowManagergetDefaultDisplay().getSize()方法,或者通过DisplayMetrics类获取屏幕高度。

  3. 计算控件底部距离屏幕顶部的距离: 控件底部距离屏幕顶部的距离 = 控件顶部距离屏幕顶部的距离 + 控件的高度。 其中,控件顶部距离屏幕顶部的距离 = 控件顶部在父布局中的位置 - 父布局顶部在屏幕中的位置(如果控件直接位于根布局,则父布局顶部位置为0)。

示例代码(假设控件为myView):

Rect rect = new Rect();
myView.getComponentLocation(rect);
int screenHeight = getWindowManager().getDefaultDisplay().getHeight();
int viewTopOnScreen = rect.top; // 假设myView直接位于根布局
int viewHeight = myView.getHeight();
int viewBottomToScreenTop = viewTopOnScreen + viewHeight - screenHeight; // 调整为正数计算

注意:上述代码需根据实际情况调整,特别是如果控件不在根布局时,需计算父布局顶部在屏幕中的位置。

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

回到顶部