React Native - 如何从 ScrollView 获取视图的 Y 偏移值?

2023-11-25

我正在尝试获取视图的滚动位置。但价值为页面的 Y 偏移量这与视图的位置无关。

滚动视图层次结构:

<ScrollView>
  - MyComponent1
  - MyComponent2
    - SubView1
       - SubView2
         - <View> (Added ref to this view and passing Y offset value through props)
  - MyComponent3
 </ScrollView>

子视图2组件:

this.myComponent.measure( (fx, fy, width, height, px, py) => {
   console.log('Component width is: ' + width)
   console.log('Component height is: ' + height)
   console.log('X offset to frame: ' + fx)
   console.log('Y offset to frame: ' + fy)
   console.log('X offset to page: ' + px)
   console.log('Y offset to page: ' + py)

   this.props.moveScrollToParticularView(py)
})

<View ref={view => { this.myComponent = view; }}>

我已经检查了 a 的确切位置SubView2查看onScroll方法。但确实与measure value。我能弄清楚measure value是错的。

是ScrollView层次结构问题吗?


View组件有一个属性称为onLayout。您可以使用此属性来获取该组件的位置。

onLayout

在安装和布局更改时调用:

{nativeEvent: { layout: {x, y, width, height}}}

一旦计算出布局,就会立即触发此事件, 但当时新的布局可能还没有反映在屏幕上 收到事件,特别是如果布局动画处于 进步。

Update

onLayoutprop 为父组件提供了一个位置。这意味着找到SubView2,您需要获得所有父组件的总和(MyComponent2 + SubView1 + SubView2).

Sample

export default class App extends Component {
  state = {
    position: 0,
  };
  _onLayout = ({ nativeEvent: { layout: { x, y, width, height } } }) => {
    this.setState(prevState => ({
      position: prevState.position + y
    }));
  };
  componentDidMount() {
    setTimeout(() => {
      // This will scroll the view to SubView2
      this.scrollView.scrollTo({x: 0, y: this.state.position, animated: true})
    }, 5000);
  }
  render() {
    return (
      <ScrollView style={styles.container} ref={(ref) => this.scrollView = ref}>
        <View style={styles.view}>
          <Text>{'MyComponent1'}</Text>
        </View>
        <View style={[styles.view, { backgroundColor: 'blue'}]} onLayout={this._onLayout}>
          <Text>{'MyComponent2'}</Text>
          <View style={[styles.view, , { backgroundColor: 'green'}]} onLayout={this._onLayout}>
            <Text>{'SubView1'}</Text>
            <View style={[styles.view, { backgroundColor: 'yellow'}]} onLayout={this._onLayout}>
              <Text>{'SubView2'}</Text>
            </View>
          </View>
        </View>
      </ScrollView>
    );
  }
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native - 如何从 ScrollView 获取视图的 Y 偏移值? 的相关文章

  • 使用 Javascript 增加 div 中的数字

    我对 Javascript 很陌生 所以我认为这是一个愚蠢的错误 function upvote var score parseInt document getElementById voteScore innerHTML score sc
  • 滚动在 chrome 中的 svg 异物内不起作用

    我在 svg 异物中有 div 带有溢出 auto 滚动仅适用于鼠标滚轮 无法拖动栏 它适用于 Firefox 但不适用于 chrome safari 如果 svg g 元素上没有转换 它就可以工作 参见小提琴 http jsfiddle
  • 使用 AngularJs NgResource 从本地主机加载 JSON 文件

    Overview 我正在构建一个应用程序 在 MAMP 上运行 该应用程序包含联系信息 一旦该部分正常运行 该应用程序将扩展以包含更多数据 例如项目名称和截止日期 问题 当用户访问时 projects php project 我希望他们看到
  • 如何识别当前打开的每个单独的浏览器窗口?

    如何使用 javascript 唯一地识别当前为所有主要浏览器打开的每个单独的浏览器窗口 让我解释一下我需要了解的内容 并考虑以下场景 我有 3 个当前打开的浏览器窗口 任何现代浏览器 即 Chrome Firefox 等 每个窗口都包含多
  • 如何将 CAD (DWG) 文件转换为 GeoJSON?

    我正在使用 OpenLayers 需要将 DWG 文件转换为 GeoJSON 格式 我怎样才能做到这一点 事实上 GDAL 拥有完成此任务所需的工具 ogr2ogr 是 GDAL 中包含的一个程序 可以转换多种格式 https gdal o
  • JQuery:获取单选按钮值

    我有以下 HTML HTML
  • 使用 jquery UI 调整大小的分屏 div

    我心中有一个设计 涉及 html 中的拆分面板视图 类似于 winforms 拆分面板 我一直在尝试jQuery UI 可调整大小 http jqueryui com demos resizable我喜欢这个功能 我只是似乎无法协调两者的大
  • 如何在严格模式下设置元素样式属性?

    Given body document getElementsByTagName body 0 iframe document createElement iframe iframe src protocol settings script
  • .addClass 仅添加到无序列表中单击的项目符号

    我有一个简短的无序列表 其中有两个项目符号 我添加了一些 Javascript 这样当我单击项目符号时 它会向其中添加一个类 问题是 它将该类添加到所有现有的 li 中 而不仅仅是我单击的那个 这是 JSFiddle http jsfidd
  • 单击链接时如何将另一个 JSP 页面注入到

    我在一个JSP页面中有两个不同的部分 其中一个包含链接菜单 单击时 div2 id content 会相应加载不同的页面 我正在做类似的事情 div ul class navbar li a href Login jsp Login a l
  • 是否可以加载本地版本的 JavaScript 文件而不是服务器版本?

    只是有一个简单的问题要抛出 看看是否有解决方案 假设我无法访问服务器 我加载一个网页 发现他们有一个从子文件夹加载的 Javascript 文件 比方说 scripts js some js 现在 我想在本地对此文件进行更改 并针对整个站点
  • Django CBV表单提交返回的JSON显示为新页面

    我正在使用 Django 3 2 我正在创建一个简单的时事通讯订阅表格 表单提交将 JSON 返回到前端 然后应该使用前端来更新页面的部分内容 但是 当我发布表单时 JSON 字符串将在新页面上显示为文本 这是调用视图的路由 urlpatt
  • 无法在 .js 文件内命中断点

    我升级到 win 8 现在我在管理员权限下运行 VS 2012 并在 MVC 4 中创建一个网站 我在线检查了不同的解决方案 但没有一个有效 我的解决方案中有一个 javascript 文件 但是当我在其中放置断点时 在运行时我看到 没有为
  • 在 Promise 中中止 ajax 请求

    我正在构建一个表单验证并学习承诺 我决定使用承诺模式实现异步验证函数 var validateAjax function value return new Promise function resolve reject ajax data
  • JavaScript:String 和 Array 上的 indexOf 方法的效率差异

    我很好奇效率是否存在差异indexOf两者都可用的方法Array and String在 JavaScript 中 我以为indexOf在 String 上的效率低于在 Array 上的效率 而我的new测试结果支持了这一点 例如 var
  • Internet Explorer 10,最大 div 大小为 1.533.917 像素

    我需要制作一个非常大的 div 以百万像素为单位 搜索我发现这个线程证明 IE 可以管理最多 10 000 000 px 确定最大可能的 DIV 高度 https stackoverflow com questions 7719273 de
  • 如何沿着 Parse Promise 链传递额外数据[重复]

    这个问题在这里已经有答案了 在我的 Parse Cloude 代码中 我需要运行几个连续的查询 每个查询都使用 find Example var promise firstQuery get objectId then function r
  • 如何取消 ComponentWillUnmount 中的所有请求?

    根据docs https facebook github io react docs react component html componentwillunmount ComponentWillUnmount 能够取消请求 我有一个页面发
  • Google 脚本过滤一个值的范围

    我想过滤第 1 列中仅包含 Bob 特定值的行的 google 工作表范围 到目前为止 我的代码允许我过滤out第 1 列中有 Bob 的行 我需要相反 我想返回第 1 列中只有 Bob 的行 因此 其中 filterSettings 不是
  • javascript:新日期,缺少年份

    我打电话给 new Date Jan 4 发现默认年份是2001年 a new Date Jan 4 Thu Jan 04 2001 00 00 00 GMT 0500 EST 有什么办法可以将默认年份设置为 2011 年吗 更新 我知道我

随机推荐

  • 在 ggplot 中显示一个矩形,其中 x 轴采用日期格式

    如何在 ggplot 中以日期格式显示 x 轴的矩形 我知道这段代码 geom rect xmin 0 xmax 1 ymin 0 ymax 1 fill blue 但是如果 x 轴是日期格式怎么办 语法是什么xmin and xmax 就
  • Python 克隆 git 存储库的方法

    有没有一种不使用子进程的Python方法来克隆git存储库 我准备使用您推荐的任何类型的模块 Using GitPython会给你一个很好的 Git 的 python 接口 要克隆新存储库 您可以使用克隆源功能 from git impor
  • 在ggplot2中标记特定点

    我正在尝试在 ggplot2 中的特定散点图中标记各个兴趣点 我的数据以包含多列的 csv 文件形式存在 Gene chr start stop A B C D E APOBEC3G chr22 39472992 39483773 97 0
  • 尽管安装了 gem,但仍找不到 gem

    我已经构建了我的第一个 gem 但我似乎无法正确安装它 我可以发出命令 sudo gem install ceilingfish toto 产生输出 Successfully installed ceilingfish toto 0 3 6
  • 当Python对象被删除时,Ctypes结构和指针是否自动释放内存?

    使用 Python CType 时 存在允许您在 Python 端克隆 C 结构的结构 以及从内存地址值创建复杂 Python 对象并可用于通过引用来回传递对象的 POINTERS 对象 C代码 我在文档或其他地方找不到的是 当包含从 C
  • IE8 浏览器不支持 IndexOf

    我的应用程序中有级联下拉菜单 使用 jquery 级联 现在我的问题是它可以与 IE9 Firefox Opera 和 Safari 顺利工作 但不能与 IE7 IE8 等任何浏览器一起工作 我浏览了这个问题 发现错误是由于我的jquery
  • Firebase 存储覆盖文件

    我的程序中有一个小错误 我的应用程序中有 firebase 存储 我想让用户将图像上传到存储 问题是当用户上传图像然后尝试上传另一张图像时 该程序会覆盖之前上传的图像 我想要的是当用户想要上传另一张图像时避免 覆盖 并将两个图像保存在不同的
  • 从 NSArray 获取字符串值

    我有一个NSArrayController当我得到selectedObjects并创建一个 NSString 其值为valueForKey Name 它返回 This is still a work in progress 我想要的只是其中
  • 如何在不重新组合的情况下获得精确的尺寸?

    我需要可组合项的大小来绘制动态线条 但我不想通过以下方式获取大小 var size by remember mutableStateOf IntSize Zero Modifier onSizeChanged size it or Modi
  • Android锁屏API?

    我见过两个可以自定义锁屏的应用程序 Widget locker slidescreen 我们真的有一个 API 可以让我们自定义锁屏吗 如果不是的话 有什么技巧呢 请参阅 mylockforandroid 安卓版的我的锁 它是 GPL 的
  • 将文件分块发送到 HttpHandler

    我正在尝试将文件分块发送到 HttpHandler 但是当我在 HttpContext 中收到请求时 inputStream 为空 所以 a 发送时我不确定我的 HttpWebRequest 是否有效 b 在接收时我不确定如何检索 Http
  • 当前目录中包含多个 jar 文件的 javac 类路径选项导致错误

    环境 Windows 7 Java 6 尝试使用 cp 选项编译 java 文件 该文件使用当前目录中的单个 jar 文件以及当前目录中的一些其他 jar 文件 javac cp jar MyFile java 不起作用 javac cp
  • 未经授权的请求后抑制 NTLM 对话框

    在最近的一个共享点项目中 我实现了一个身份验证 Web 部件 它应该取代 NTLM 身份验证对话框 只要用户提供有效的凭据 它就可以正常工作 每当用户提供无效凭据时 Internet Explorer 中就会弹出 NTLM 对话框 我的 J
  • 获取文件的创建日期/时间

    这似乎是一个非常简单的问题 但我无法在网上找到明确的答案 如何通过 Java 的文件管理器获取文件创建的日期 时间 除了文件名之外 我还能获得有关文件 属性 的哪些信息 我不确定如何使用 Java 6 及更低版本获得它 使用 Java 7
  • 零除错误 (Python)

    我收到一些图像的零除错误 尽管其中很多都工作得很好 这是代码 image skimage io imread test png False image gray skimage io imread test png True blurred
  • 为什么模板只能在头文件中实现?

    引用自C 标准库 教程和手册 目前使用模板的唯一可移植方法是通过使用内联函数在头文件中实现它们 为什么是这样 澄清 头文件不是only便携式解决方案 但它们是最方便的便携式解决方案 警告 它是not有必要将实现放入头文件中 请参阅本答案末尾
  • 无法在 LazyColumn 中使用屏幕底部的 TextField

    我有这个代码 setContent val items mutableListOf
  • 迁移到 AndroidX

    好吧 我开始从一个一年前的项目迁移到 AndroidX 此后一直没有动过 但我在资源和 gradle 构建方面遇到了问题 我完全迷失了新的命名空间 我更改了其中一些命名空间 我升级了 AndroidStudio 告诉我的所有内容 但仍然无法
  • sdkman安装的`sdk`命令在哪里

    我刚刚安装sdkman用于在我的机器 MacOS 上安装 grails 当我跑步时which sdk命令我没有得到任何输出 但是当我运行sdk help命令 shell 能够解析它并给出正确的输出 我检查了 PATH 环境变量中提到的所有目
  • React Native - 如何从 ScrollView 获取视图的 Y 偏移值?

    我正在尝试获取视图的滚动位置 但价值为页面的 Y 偏移量这与视图的位置无关 滚动视图层次结构