Appcelerator:元素未添加到android中的视图中

时间:2017-08-02 18:01:43

标签: javascript android xml titanium appcelerator

我一直在研究多平台移动应用程序。我几乎完成了它,但我总是在 iOS 上测试(因为原因)。现在我可以在 Android 上进行测试,发现它在很多方面都失败了。

这里的主要问题是当我使用时:

alloy.createSomeElement({
    //params
})
$.someView.add(someElemet);

元素未添加到视图中。正如我所提到的,这只发生在Android上,在iOS上运行得很好。

在这里,我向您展示了一个示例,它在两个平台上都有结果。

e.json.forEach(function(address) {
    var addressView = Ti.UI.createView({
        height : Ti.UI.SIZE,
            width : '90%',
            layout : 'horizontal',
            touchEnabled : true,
            Address_id : address.id
        });
        var icoCont = Ti.UI.createView({
            height : 20,
            width : '10%'
        });
        var icon = Ti.UI.createImageView({
            height : '20',
            width : '20',
            image : "/compartidos/persona3.png",
            touchEnabled : false
        });
        var addressText = Ti.UI.createLabel({
            height : Ti.UI.SIZE,
            width : Ti.UI.FILL,
            left : 1,
            text : address.street + " - " + address.ext_number,
            font : {
                fontSize : 12,
                fontFamily : "Nunito-Bold",
            },
            touchEnabled : false,
            color: "#000"
        });
        if (address.alias)
            addressText.text = address.alias;
        var separator = Ti.UI.createView({
            height : 5,
            width : '100%',
            top : 5,
            bottom : 5,
            backgroundColor : '#8C000000',
            touchEnabled : false
        });
        addressView.add(icoCont, addressText);
        icoCont.add(icon);
        $.container.add(addressView, separator);
    });

iOS上的结果:result on iOS

这在Android上:result on Android

我真的希望你能帮助我。

注意:Nuevadirección和Dirección不是以这种方式生成的,它们存在于xml文件中。

2 个答案:

答案 0 :(得分:0)

经过长时间的尝试和解决后,我解决了我的问题。错误。我发布我的解决方案只是为了有人遇到同样的问题。

似乎在Android中我无法像这样在单个指令中添加多个元素

addressView.add(icoCont, addressText);

我唯一需要做的就是将它分成2个(每个元素一个),如此

addressView.add(icoCont);
addressView.add(addressText);

答案 1 :(得分:0)

您可以在单个add语句中添加许多视图,但是您需要将它们作为数组传递,如: addressView.add([icoCont,addressText]);