代码之家  ›  专栏  ›  技术社区  ›  skorulis

BlackBerry布局更改字段高度

  •  1
  • skorulis  · 技术社区  · 14 年前

    我创建了一个自定义字段,用于从URL加载图像。我想做的是让字段不占用任何空间,然后当加载图像时,将其自身调整为图像的大小。我几乎已经完成了所有的工作,但我无法找到一种方法来在加载图像后重新完成布局。如果我事先指定图像的大小,它就会工作。在父级上调用invalidlayout将不起作用,因为屏幕是可见的,但只要调用invalidate就不会起任何作用。要调整字段大小,需要执行哪些步骤?

    如果我可以在自定义视图上调用方法而不是父视图,这也是更好的,但这不是必需的。

    这是黑莓4.5.0版。

    1 回复  |  直到 14 年前
        1
  •  1
  •   TheSquad    14 年前

    首先,您必须使父管理器无效,因为它确实需要自定义字段的新大小,以便正确地重新绘制整个管理器。(如果在自定义字段之后管理器中还有其他字段,甚至还有一个滚动)。

    在我的头脑中,您可以尝试实现以下两种解决方案:

    • 当自定义域下载完图像后,调用父管理器使其中的所有域无效(您必须在自定义域中保存对父管理器的引用)。

    --或--

    • 创建自定义字段对象,而不将其添加到管理器。开始下载图像,完成后,调用将自定义字段添加到管理器的特定于父级的方法(您仍需要在自定义字段中保存对父级管理器的引用)(如果要在管理器上已有的两个字段之间添加,可以使用“插入”)。这样,您就不必调整字段的大小,只需在准备显示字段时将其添加到管理器中。

    回答您的意见:

    然后应该使用同步作用域:

    synchronized(UiApplication.getUiApplication().getEventLock())) {  
        // UI Code here  
    }  
    

    基本上在这个范围内,您应该只使用一个invalidate,在这个调用之前在其他地方更改您的大小。

    推荐文章