Titanium Appcelerator Мобильные связанные прокрутки сохраняют положение верхней метки без задержки - PullRequest
1 голос
/ 25 января 2012

Я создал эти 2 связанных вида прокрутки. Я хочу, чтобы "timelineView" оставался на вершине при прокрутке по вертикали, но он запаздывает, потому что я устанавливаю вершину каждый раз, когда запускается событие прокрутки.

Примечание: это работает, только запаздывает ..

Примечание 2: при горизонтальной прокрутке TimelineView прокручивает по горизонтали, равный просмотру прокруткиэто строка x "этикетки

С уважением,

Дирк (Нидерланды)

Titanium.UI.setBackgroundColor('#000');

//
// create base UI tab and root window
//
var win = Titanium.UI.createWindow({  
    title:'My fancy Schedule',
    backgroundColor: '#666',
    url: '/main_windows/scrollview.js',
    navBarHidden: true,
    width: 320,
    top: 0
});

var startHeight = 35;
var currentY = startHeight;
var areaLabelHeight = 20;
var timelineWidth = 1000;
var timelineHeight = 100;
var margin = 5;
var currentArea = 0;

var view = Ti.UI.createScrollView({
    width: win.width,
    contentWidth: win.width,
    height: win.height,
    left: 0,
    top: 0,
    zIndex: 7
});

var scrollView = Ti.UI.createScrollView({
    width: win.width, 
    contentWidth: timelineWidth,
    zIndex: 10,
    top: 0
});

var scrollView2 = Ti.UI.createScrollView({
    width: win.width, 
    height: win.height,
    contentWidth: timelineWidth,
    zIndex: 5,
    top: 0,
    backgroundColor: '#f00'
});

var timelineView = Ti.UI.createView({
    width: timelineWidth, 
    height: 20,
    left: 0,
    top: 0,
    zIndex: 30
});

var timeline = Ti.UI.createLabel({
    text: 'Timeline',
    width: timelineWidth, 
    height: 20,
    top: 0,
    left: 0,
    textAlign: 'left',
    color: '#fff',
    backgroundColor: '#000',
    font: {fontSize:10, fontWeight:'bold', zIndex: 31, textAlign: 'left'},
    zIndex: 31
});

timelineView.add(timeline);

for(i=0; i<10;i++) {
    currentArea = i+1;

    view.add(Ti.UI.createLabel({
        text: 'Area ' + currentArea.toString(),
        width: '100%', 
        height: areaLabelHeight,
        textAlign: 'left',
        zIndex: 20,
        top: currentY,
        left: 5,
        color: '#fff'
    }));

    currentY = currentY + areaLabelHeight + margin;

    scrollView.add(Ti.UI.createLabel({
        text: 'This is line ' + currentArea.toString(),
        width: timelineWidth, 
        height: timelineHeight,
        top: currentY,
        textAlign: 'left',
        backgroundColor: '#ccc'
    }));

    currentY = currentY + timelineHeight + margin;
}

view.setContentHeight(currentY);
scrollView.setHeight(currentY);
scrollView.add(timelineView);

view.add(scrollView);
win.add(view);


view.addEventListener('scroll', function(e){
    try{
        var bgPoint = view.convertPointToView(e, view);

        if(bgPoint.x == 0 && bgPoint.y > 0) {
            Ti.API.info("Background Point: " + bgPoint.x + "," + bgPoint.y)
            timelineView.setTop(bgPoint.y);
        }
    }
    catch(err) {
        Ti.API.error(err);
    }
});

win.open();
...