【问题标题】:React Native - Scroll Listview at particular position - ProgramaticallyReact Native - 在特定位置滚动列表视图 - 以编程方式
【发布时间】:2016-03-17 08:36:35
【问题描述】:

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

下面是剧情,

  1. Listview 有这样的可展开行,例如在点击它展开时,可展开行包含 TextInput 组件。
  2. TextInput 中输入文本时,键盘将显示出来,此时最好将Listview 向上滚动(一旦键盘向下,Listview 应向下滚动到之前的位置)。

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


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

Listview组件中有一个叫scrollTo(x:0,y:10,animated:true)的方法(其实是Scrollview的方法),可以根据父视图的y坐标上下滚动.

我在我的代码中成功接收到键盘的 Up & Down 事件,基于此,我可以在键盘启动时以某种方式使用scrollTo 方法(通过计算 y 坐标)进行管理(如 @ 中所述Alexey 的回答)但我不知道如何在键盘关闭时计算 y 坐标? (此时理想情况下,Listview 应该向下滚动到之前的位置)。

任何帮助或提示将不胜感激!

【问题讨论】:

标签: listview react-native react-native-listview react-native-scrollview


【解决方案1】:

row height * item index 呢?假设您想滚动到 ListView 中的第 20 个元素。每行都有height: 50。我们使用上面提到的公式计算第 20 个元素的偏移量:50 * 20 = 1000。然后使用scrollTo(0, 1000),您将滚动到所需的元素。

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

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

在你连接到键盘的事件(keyboardWillHide 来自DeviceEventEmitter)之后,你可以对之前的偏移量做scrollTo

【讨论】:

  • 感谢您的回答。是的,我心里已经有了这个把戏。但是当键盘掉下来时,这里就会遇到麻烦。此时理想情况下,Listview 应该向下滚动到其先前的位置,但我怎样才能知道它的先前位置?我希望你得到我的查询..!请检查我的问题(once the keyboard get down Listview should be scrolled down to its previous position) 中的第 2 点
  • 好吧,在这种情况下,您存储以前的偏移量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
  • 2014-09-26
  • 2020-04-21
相关资源
最近更新 更多