【问题标题】:blackberry layout change height of field黑莓布局更改字段高度
【发布时间】:2010-11-15 18:27:50
【问题描述】:

我创建了一个自定义字段,可以从 url 加载图像。我想做的是让该字段不占用空间,然后在加载图像时将自身调整为图像的大小。我几乎完成了所有工作,但我无法找到一种方法来在加载图像后重新完成布局。如果我事先指定图像的大小,它会起作用。由于屏幕可见,在父级上调用 invalidateLayout 将不起作用,但仅调用 invalidate 不会执行任何操作。我必须通过哪些步骤来调整字段大小?

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

这适用于黑莓 4.5.0。

【问题讨论】:

    标签: blackberry layout field


    【解决方案1】:

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

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

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

    -- 或--

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

    回答您的评论:

    那么你应该使用同步范围:

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

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

    【讨论】:

    • 我设法通过仅调整孩子的大小以某种方式使其适用于我的应用程序的一部分。我对这两种方法的问题是,在 UI 线程之外执行它们时会导致崩溃
    猜你喜欢
    • 1970-01-01
    • 2012-12-11
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多