gpt4 book ai didi

listview - React Native - 在特定位置滚动 ListView - 以编程方式

转载 作者:行者123 更新时间:2023-12-01 11:27:42 25 4
gpt4 key购买 nike

在带有 Objective-C 的 iOS 中,我们可以制作 UITableView使用 scrollToRowAtIndexPath 滚动到特定的行索引方法,但在 React-Native 中我没有找到这种滚动方式 Listview在特定的行索引处。

场景如下,

  1. Listview有了这样的可扩展行,比如在点击它时它会扩展并且可扩展行包含 TextInput组件。
  2. TextInput 中输入文本时, 键盘将在此时出现,理想情况下 Listview应该向上滚动(一旦键盘放下 Listview 应该向下滚动到它之前的位置)。

这可以通过 Native-iOS 轻松实现,但我被 React-Native 困住了。

enter image description here


我尝试了以下方法,但效果不佳

有一个方法叫scrollTo(x:0,y:10,animated:true)Listview组件(实际上是它的 Scrollview 方法),它可以根据父 View 的 y 坐标 向上/向下滚动。

我在我的代码中成功地接收到键盘的向上和向下事件,基于此我可以以某种方式使用 scrollTo 进行管理。方法(通过计算y 坐标)当键盘起床时(如@Alexey 的回答中所述)但我不知道如何计算y 坐标 当键盘放下时? (此时理想情况下, ListView 应向下滚动到其先前的位置)。

如有任何帮助或提示,我们将不胜感激!

最佳答案

行高 * 项目索引怎么样?假设您想滚动到 ListView 中的第 20 个元素。每行都有 height: 50。我们使用上面提到的公式计算第 20 个元素的偏移量:50 * 20 = 1000。然后使用 scrollTo(0, 1000) 并滚动到所需的元素。

为了能够向后滚动,您需要在应用 scrollTo 函数之前存储一个偏移量:

var scrollProperties = this.refs.listView.scrollProperties;
var scrollOffset = scrollProperties.contentLength - scrollProperties.visibleLength;

在连接键盘事件(DeviceEventEmitter 中的keyboardWillHide)后,您可以scrollTo 到前一个偏移量。

关于listview - React Native - 在特定位置滚动 ListView - 以编程方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36055284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com