1

私は Titanium 2.1.3 に取り組んでおり、iOS と Android の両方に展開しています。AndroidのImageViewにTableViewで画像を表示するのに問題があります.検索バーをクリックしてキーボードを表示すると、画像が表示されます.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 に答える