我正在使用Titanium SDK 5.1.2.GA.我在Android和iOS上有像TabGroup这样的栏。当选项卡在视图中不完全可见并且您单击该选项卡时,我移动滚动。
在iOS上运行完美但在Android上运行不正常。
这是我移动滚动视图的代码:
if((view.rect.x + view.rect.width) > (toolbarX + $.toolbar.rect.width)){
$.toolbar.scrollTo(((view.rect.x + view.rect.width) - $.toolbar.rect.width) + 10, 0);
}else if(view.rect.x < toolbarX){
$.toolbar.scrollTo(view.rect.x - 10, 0);
}
$。toolbar - &gt;滚动型
view - &gt;标签
这张照片解释了我的问题:
我在互联网上看过这张JIRA票 https://jira.appcelerator.org/browse/TIMOB-17954
这将是问题??
修改
此问题是由Appcelerator上的新单元系统引起的。
我在tiapp.xml上有这一行
<property name="ti.ui.defaultunit" type="string">dp</property>
但是Titanium上的其他函数在px上返回它们的值,所以这是一个问题。
我现在的问题是:
toolbarX = e.x
来自滚动事件答案 0 :(得分:1)
解决方案:
if(Alloy.Globals.isAndroid){
var measure = require('alloy/measurement');
//Vemos si tenemos que mover la toolbar
if((view.rect.x + view.rect.width) > (toolbarX + $.toolbar.rect.width)){
$.toolbar.scrollTo(((measure.dpToPX(view.rect.x) + measure.dpToPX(view.rect.width)) - measure.dpToPX($.toolbar.rect.width)) + 10, 0);
}else if(view.rect.x < toolbarX){
$.toolbar.scrollTo(measure.dpToPX(view.rect.x) - 10, 0);
}
}else{
//Vemos si tenemos que mover la toolbar
if((view.rect.x + view.rect.width) > (toolbarX + $.toolbar.rect.width)){
$.toolbar.scrollTo(((view.rect.x + view.rect.width) - $.toolbar.rect.width) + 10, 0);
}else if(view.rect.x < toolbarX){
$.toolbar.scrollTo(view.rect.x - 10, 0);
}
}
}
$.toolbar.addEventListener('scroll', function(e){
Ti.API.info("-- toolbarX: " + e.x + " / " + Alloy.Globals.measure.pxToDP(e.x));
if(Alloy.Globals.isAndroid){
toolbarX = Alloy.Globals.measure.pxToDP(e.x);
}else{
toolbarX = e.x;
}
});
这个问题很新,因为:
<property name="ti.ui.defaultunit" type="string">dp</property>
现在,您必须以单位(px或dp)为单位(px或dp)传递Android上的值,因为某些函数返回px并且需要px而其他函数需要dp。
答案 1 :(得分:0)
这对我有用
if (OS_ANDROID) {
$.tabbar.scrollTo(Util.DPUnitsToPixels(x), 0);
} else {
$.tabbar.scrollTo(x, 0);
}
在android上将dp转换为像素