1

这是我的

APP.js

var win = Ti.UI.createWindow({
    navBarHidden : true,
    className : 'window',
    backgroundColor : "#efefef"
});

var header = Ti.UI.createView({
    height : 20,
    width : 303,
    top : 0,
    backgroundColor : "#abc"
});
win.add(header);

var scroll = Ti.UI.createScrollView({
    top : 44,
    bottom : 44,
    layout : 'vertical'
});
win.add(scroll);
header.addEventListener('click', function(evt) {
    fetch_images();
});

win.open();

function fetch_images() {
    var xhr = Ti.Network.createHTTPClient({
        onload : function() {
            myjson = JSON.parse(this.responseText);
            for ( i = 0; i < myjson.length; i++) {
                Ti.API.debug(i);
                var look = new looks(myjson[i])
                scroll.add(look);
            }
        },
        onerror : function(e) {
            Ti.API.debug("STATUS: " + this.status);
            Ti.API.debug("TEXT:   " + this.responseText);
            Ti.API.debug("ERROR:  " + e.error);
            if (Titanium.Network.online) {
                alert('No reponse from server.');
            } else {
                alert('Please Check your Internet connectivity.');
            }
        },
        timeout : 5000
    });
    xhr.open('GET', 'http://xxxxxxx.com/xxxxxxx.json?api_token=xxxxxxxx');
    xhr.send();
}

function looks(image_details) {
    var look_container = Ti.UI.createView({
        height : 325,
        width : 303,
        top : 10,
        layout : 'horizontal',
        backgroundColor : "#cac"
    });
    var look_image = i.UI.createImageView({
        width : 303,
        top : 0,
        left : 0,
        right : 0,
        image : image_details.image_medium
    });

    look_container.add(look_image);
    return look_container;
}

我正要拔掉我头上的头发。在过去的 4-5 小时内使用它。会计。到代码图像应该是这样的

在此处输入图像描述

但它看起来像这样。

在此处输入图像描述

任何猜测什么是错的!任何帮助将不胜感激??

根据代码图像应与顶部对齐(距顶部 0px)。但是图像总是在视图中,并且不粘在顶部......??

- - - - - - - - - - - - -编辑 - - - - - - - - - - - - ---

我编辑了我的代码以检查静态 JPG 图像

即使对于资源目录中的图像也是如此

检查这个问题developer.appcelerator.com/question

代码

var win = Ti.UI.createWindow({
    navBarHidden : true,
    className : 'window',
    backgroundColor : "#efefef"
});

var my_container = Ti.UI.createView({
    height : 325,
    width : 303,
    top : 30,
    backgroundColor : "#cac",
    layout : "horizontal"
});
var my_image = Ti.UI.createImageView({
    width : '100%',
    top : 0,
    left : 0,
    right : 0,
    image : 'hello.jpg'
});

my_container.add(my_image);
win.add(my_container);

my_container.addEventListener('click', function() {
    my_image.top = my_image.top - 25;
})

win.addEventListener('click', function() {
    my_image.top = my_image.top + 5;
})
win.open();

和要使用的图像的图像 url 。

4

1 回答 1

1

问题不在于布局属性,而是图像缩放!首先请注意,您传递的图像比视图大,因此 Titanium 在工作表下进行了一些缩放。

因此,当您定义 that 的宽度时ImageView,如果您传递的图像大于视图,Titanium 会使用自己的机制对其进行缩放,这显然不是您想要的,因为过去它一直让您扯掉头发几天。我相信他们会从下向上缩放图像,从而导致您出现奇怪的问题。

要解决此问题,您需要控制 Titanium 中的图像缩放,并传递一个新的、调整大小的图像

为此,我们需要获取图像的原始高度和宽度,以保持纵横比,然后计算出新的大小,调整图像大小,并将其传递给 imageView。

要获得图像的高度和宽度,您必须稍微修改一下,以下是我使用 SDK 2.1.1.GA 的方法:

获取 Blob / 图像的高度和宽度

// Load the image as a blob to get height information
var imageFile = Ti.Filesystem.getFile('hello.png');
var blobOfImage = imageFile.read();

// Put it in a imageView, since It wont let me get height from a blob for some reason
var imageView1 = Titanium.UI.createImageView({
    image: blobOfImage,
    width: 'auto',
    height: 'auto',
});

// This is the important part, toImage this view and you get the height and width of this image
// For some reason we cant get this from a Blob in SDK 2.1.1.GA
var heightOfImage = imageView1.toImage().height;
var widthOfImage = imageView1.toImage().width;

现在我们计算宽度的纵横比(iPhone 的屏幕尺寸为 320)。

纵横比

var aspectRatio =  heightOfImage / widthOfImage;

现在我们可以在 imageview 中创建新的调整大小的图像。

新图片!

var my_container = Ti.UI.createView({
    height : 325,
    width : 303,
    top : 30,
    backgroundColor : "#cac",
    layout : "horizontal"
});
var my_image = Ti.UI.createImageView({
    top : 0,
    left : 0,
    right : 0,
    image : blobOfImage.imageAsResized(320, 320*aspectRatio) // Note the resize call to the image blob
});

这是最终输出:

截屏

所以我想这个教训是不要相信 Titanium 会为你缩放你的图像。

于 2012-08-14T15:40:58.950 回答