nativescript - Nativescript 6 外部图像父级不尊重高度
问题描述
我有一个 NS 6 应用程序并在带有 iOS 13 的 iPhone 6+ 上进行测试。
在这个应用程序中,我有一个 ListView,在 ListView 中我有一个nativescript-carousel。
在轮播中,我有一个加载外部图像的图像组件。问题是当我加载页面时,图像被加载,但父级没有垂直扩展以适应图像的整个高度。我只能看到它的一小部分。
我尝试刷新 ListView 并调用 page.requestLayout(),但这并没有帮助。如果我设置图像高度,一切正常,但问题是某些轮播项目可能没有图像,所以我不能承诺设置高度。
这是我的代码(为简洁起见截断):
<ListView id="lst" items="{{ asks }}">
<ListView.itemTemplate>
<StackLayout class="ask-item">
…
<GridLayout rows="*" columns="*" marginTop="10">
<ns:Carousel items="{{ recs }}" color="white" pageChanged="myChangeEvent" android:indicatorAnimation="slide" indicatorColor="#999999" indicatorColorUnselected="#dddddd" indicatorOffset="0,15" showIndicator="true">
<ns:Carousel.itemTemplate>
<ns:CarouselItem backgroundColor="#f9f9f9" verticalAlignment="middle">
<StackLayout class="rec-item">
…
<Image src="{{ image }}" stretch="aspectFit" horizontalAlignment="center" />
…
</StackLayout>
</ns:CarouselItem>
</ns:Carousel.itemTemplate>
</ns:Carousel>
</GridLayout>
</StackLayout>
</ListView.itemTemplate>
</ListView>
处理这个问题的最佳方法是什么?
谢谢你。
解决方案
从本质上讲,iOS ListView 的高度一旦渲染就无法更改,您必须更新特定的列表项。
尝试预先下载图像或听 isLoading 属性更改,然后捕获原始图像的高度并将高度绑定到布局。图像高度可以是原始像素,您可能希望将其转换为与密度无关的像素,以便在高分辨率设备上更好地显示。
推荐阅读
- c++ - 使 Qmake 项目中的源代码依赖于协议缓冲区
- java - 带有 Oracle com.zaxxer.hikari.pool.HikariProxyCallableStatement 的 HikariCP 无法转换为 oracle.jdbc.OracleCallableStatement
- c# - 使用特定于环境的 appsettings.json 文件时,是否有办法按设置替换而不是添加?
- python - 如何从网页中的表格中抓取所有元素?
- opengl - 链接失败 - SDL(ld:未找到框架 SDL)
- unix - 如何实时读取目录中创建的 Unix 日志?
- google-app-maker - 显示上传到应用资源的图像
- python-3.x - 为什么不能导入子模块,而可以导入模块?
- google-apps-script - 谷歌应用脚本项目、相关工作表和云项目设置全部消失
- html - 无法将透明背景应用于子 div