滚动时ListView布局问题

时间:2016-09-09 20:32:46

标签: javascript xml nativescript

在我的Nativescript应用程序中,我构建了一个ListView,其中每个列表项都包含一个带有嵌套GridLayout的堆栈布局。这是XML的一个例子。

$file_array = \Drupal::entityTypeManager()->getStorage('file')->loadByProperties(['uuid' => $img_uuid]);
$file_id = reset(array_keys($file_array));
$file = File::load($file_id);
$image_uri = ImageStyle::load('image-lightbox')->buildUrl($file->getFileUri());
$image = \Drupal::service('image.factory')->get($image_uri);

我遇到了一个问题,当我滚动列表视图时,列表项的布局开始扭曲,元素不对齐或完全消失。具有布局问题的列表项也不一致。如果我向上滚动并看到一些破碎的物品,我可以在几秒钟之后回滚它们并且它们会很好但是列表中的其他物品看起来会变形。任何想法会导致这个或我可以使用什么来解决它?下面是我的意思的屏幕截图。

Notice the timestamps, the 12:34 AM timestamp is aligned correctly. The others are either justified incorrectly or missing, even though the data for it is available!

修改 我根据接受的答案建议重新构建了列表视图中的xml,现在问题已解决。以下是更新的xml,以防任何人遇到类似的问题。

$file = File::load($file_id)

1 个答案:

答案 0 :(得分:1)

2个问题。一个是对于GridLayout,您需要考虑表中的每个单元格 - 您还没有。例如第1行第3行。

但它的行为方式的主要原因是ListView的工作方式。 ListView似乎在创建期间测量布局一次,然后在滚动时,对象将被丢弃并再次针对不同的底层对象重用。所以,例如如果标签包含4:29一次 - 标签宽度设置为适合该标签。下次ListView在同一个项目中放置一个较长的文本标签--11:34 - 没有足够的空间,listview决定不显示它。解?明确设置列的宽度。