1

我正在开发 Titanium 2.1.3 并为 iOS 和 Android 进行部署。我在 TableView 中的 Android 上的 ImageView 上显示图像时遇到问题,如果我执行诸如单击搜索栏并显示键盘之类的操作,则显示图像,或者如果我滚动 TableView,图像会出现和消失而没有明显的原因。似乎除非我在 TableView 上执行强制刷新布局的操作,否则不会呈现图像。图像在 Android 和 iOS 中的加载方式相同,如下所示:

var itemIconHolder = Titanium.UI.createView({
    width : '100dp',
    left : '55dp',
    height : "100%"
});

var itemIcon = Titanium.UI.createImageView({
    left : '0dp',
    height : '100%',
});

var f = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, "thumb-" + filename);
itemIcon.image = f;

itemIconHolder.add(itemIcon);

这个问题在 iOS 中不会发生,在 iOS 设备/模拟器上,行为是正常且完美的,但在 Android 设备/模拟器上会发生。我必须在 Android 中以不同方式加载图像吗?我错过了什么吗?我希望有人能在这方面帮助我。提前致谢。

编辑

我尝试了这些方法:

itemIcon.image = f.read();

itemIcon.image = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, "thumb-" + filename);

但是直到我做了一些导致 TableView 以某种方式刷新的东西之前,图像仍然没有被渲染。

4

1 回答 1

0

我在 Android 上找到了针对此特定问题的解决方法。由于要正确渲染图像需要刷新布局,所以我所做的是为表格设置动画,将其1dp朝一个方向移动,并在所述动画完成时再次对其进行动画处理以将其返回到其原始位置。这是我使用的代码:

var table_bottom = '-1dp'

var tableAnimation = Ti.UI.createAnimation({
    bottom : table_bottom,
    duration : 100
});
tableAnimation.addEventListener('complete', function(e){
    var table_bottom = '50dp';
    if (osname === 'android') 
    {
        table_bottom = '0dp'
    }
    table.animate({
        bottom : table_bottom,
        duration : 100
    });
});

我在 Titanium SDK 2.1.3 和 Titanium 3.0 都遇到过这种问题。

于 2013-07-22T20:59:47.100 回答