为什么Android中的图像没有显示在TableView上?

时间:2013-07-22 16:14:51

标签: android titanium android-imageview titanium-mobile appcelerator-mobile

我正在使用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以某种方式刷新的东西时,图像仍然没有渲染。

1 个答案:

答案 0 :(得分: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上都遇到过这种问题。