我正在使用带有Angular的NativeScript处理应用程序,并且遇到了ScrollView
元素的问题。简而言之,问题是我有一个项目列表的初始视图,如果我按下其中一个项目进入详细视图并返回到初始视图,滚动将跳转并在顶部创建一个间隙然后跳起来,差距就消失了。
以下是该问题的GIF:
正如您所看到的,当您返回初始视图时,会产生一个间隙,但我无法弄清楚为什么会发生这种情况。 ActionBar以编程方式被禁用,我尝试完全删除它或让它可见,但它并没有什么区别。
我使用的代码与可以使用以下命令安装的Angular和TypeScript模板没有什么不同:tns create MyApp --ng
或者也可以是found on GitHub。
我所做的就是禁用ActionBar并将items.component.html
更改为:
<GridLayout>
<ScrollView>
<StackLayout>
<StackLayout *ngFor="let item of items" [nsRouterLink]="['/item', item.id]">
<AbsoluteLayout style.backgroundColor="gray">
<FlexboxLayout left="15" top="110" flexDirection="column">
<Label [text]="item.id"></Label>
<Label [text]="item.name"></Label>
</FlexboxLayout>
</AbsoluteLayout>
</StackLayout>
</StackLayout>
</ScrollView>
</GridLayout>
我已经删除了所有不必要的样式,以便找出问题所在并且看起来罪魁祸首是AbsoluteLayout
元素。删除它会使问题消失,但我一直无法弄清楚它为什么会导致问题。我完全了解ListView
元素的存在,但想使用完全自定义列表进行更多自定义。
至于我的编程环境,我运行的是NativeScript版本3.3.0,其中tns-core-modules
和tns-ios
也在3.3.0上运行。一切都在iOS 11的实际iPhone上进行了测试。
所以我的问题是:为什么会出现这个问题以及如何解决?
答案 0 :(得分:1)
我注意到ScrollView
上方的空格与iOS状态栏一样高,这让我相信这是iOS特定的问题。此外,我在GitHub上找到了半透明状态栏的功能请求。建议的解决方案是将以下内容添加到页面的控制器中:
this._page.style.marginTop = -20;
这解决了我的ScrollView
问题,同样的问题也可以通过添加高度为20的StackLayout
作为视图中的第一个元素来解决,但这会破坏大多数用户界面。 / p>