2016-07-11 6 views
0

Я работаю над приложением с чатом. Но как обычный экран, он начинает прокручивать сверху вниз. Но это должно быть снизу вверх. Приложение находится на платформе Telercik Nativescript.Auto scroll to Bottom

View.xml

<ScrollView row="0" col="0"> 
    <StackLayout class="history-content-area"> 
     <Repeater items="{{messageHistory}}"> 
      <Repeater.itemTemplate> 
       <StackLayout> 
        <!-- ITEMS GO HERE --> 
       </StackLayout> 
      </Repeater.itemTemplate> 
     </Repeater> 
    </StackLayout> 
</ScrollView> 

Мне нужна помощь в коде выше, как я могу прокрутить вниз автоматически при загрузке страницы? Дайте мне знать, если вам нужен код javascript.

Заранее спасибо.

ответ

1

На вашем ScrollView вы можете использовать scrollToVerticalOffset, где вы можете передать смещение для прокрутки.

Например: view.xml

<ScrollView row="0" col="0" id="myScroller"> 
    <StackLayout class="history-content-area"> 
     <Repeater items="{{messageHistory}}"> 
      <Repeater.itemTemplate> 
       <StackLayout> 
        <!-- ITEMS GO HERE --> 
       </StackLayout> 
      </Repeater.itemTemplate> 
     </Repeater> 
    </StackLayout> 
</ScrollView> 

view.js

mScroller = page.getViewById("myScroller"); 

var offset = mScroller.scrollableHeight; // get the current scroll height 
mScroller.scrollToVerticalOffset(offset, false); // scroll to the bottom 
+0

эй @Nick lliev, я получаю смещение в 'offset' но не прокручивается. Возможно ли, что нам нужно добавить тайм-аут? –

+0

Возможно, вы можете попробовать что-то вроде setTimeout (scrollToBottomFunc, 10); ... также, вероятно, вам следует рассмотреть возможность удаления/изменения ваших макетов стека (так как это макет без предварительно определенных размеров) в макет сетки или аналогичный. –

+0

Спасибо, что все сработало. –

0

Допустим, ваш ScrollView имеет свой идентификатор 'ид-скроллер'. Затем в View.js вы делаете:

let scroller = page.getViewById('id-scroller'); 

setTimeout(function() { 
    scroller.scrollToVerticalOffset(scroller.scrollableHeight, true); 
}, 1);