我目前正在使用Appcelerator studio v4.5.0和Ti SDK 5.2.2。这个问题涉及iOS和Android,因为行为似乎是相同的。
我想在表格的顶部插入数据。当我插入数据时,我希望表保持静态,即Twitter。数据应显示在用户当前正在查看的内容之上,除了用户之外,不会跳过或移动表。我尝试过的所有方法都会被添加的行数推下来。如果你添加足够的行 - 体验是不和谐的。
我已经尝试了以下所有结果:表格移动:
我目前正在尝试使用知道行高/行数的混合物并使用table.scrollToIndex()或table.scrollToTop()。但到目前为止,这两者都会导致非常神奇的体验,特别是如果用户当前正在滚动。在Android上,这两个函数都占据有限位置,半行不可用。
是否有一个我错过的设置迫使表格执行此操作?或者它是纯索引,以及表中的索引5现在是索引7(在添加2行之后)并且表保持在索引5?我真的很讨厌必须围绕这个"设计。因为它显然是可能的。
任何帮助表示感谢。
答案 0 :(得分:0)
好吧,似乎没有设置阻止表滚动插入,因为它实际上只是试图让用户保持最后的索引。但是,以下在iOS上相当无效。为了减轻Android上的跳跃,请使用@PrashantSaini方法。
在表格的滚动事件中,存储用户的位置:
var scrollPos;
self.addEventListener('scroll',function(e){
if(Ti.Platform.osname === 'android'){
scrollPos = e.firstVisibleItem;
}else{
scrollPos = e.contentOffset.y;
}
}
然后,在插入行/部分之后,使用scrollToTop设置表的查看次数。
table.insertRowBefore(indexToInsert,tableData[i],{animated:false});
//Adjust the scroll position for the height of the row for iOS and index for Android
scrollPos += (Ti.Platform.osname === 'android')?1:200;
//Make table opaque for a while while it does its thing - Android only
if(Ti.Platform.osname === 'android'){table.opacity = 0.2;}
//Do the scroll
table.scrollToTop(scrollPos, {animated:false});
//Opacity back to normal in Android
if(Ti.Platform.osname === 'android'){table.opacity = 1.0;}
请注意,这会导致Android的跳转,并且还需要您知道要插入的行的高度。