gpt4 book ai didi

android - 检查元素是否适合屏幕

转载 作者:太空狗 更新时间:2023-10-29 13:27:13 25 4
gpt4 key购买 nike

我在我的应用中添加了一个 View ,定义如下:

Ti.UI.createView({
top: 0,
left: 0,
width: '50%'
height: '460dp',
backgroundColor: 'red'
});

我想知道上面的 View 是否适合屏幕。 IE。用户的屏幕是否足够高以完全显示我的整个 View 。我尝试了以下方法:

function getPixels(dp) {
return (dp + (Ti.Platform.displayCaps.dpi / 160));
}

alert(460); // 920
alert(Ti.Platform.displayCaps.platformHeight); // 1136

这在 iphone 模拟器上似乎是正确的。然而,当我在我的安卓设备上运行完全相同的代码时,我得到了结果:

屏幕高度:1200
View 高度:690

这似乎不正确,因为红色背景的 View 在 iphone 模拟器上占用的空间几乎与在我的 android 设备上占用的空间一样多。

有什么方法可以在所有设备(ios 和 android)上获得一致的结果。或者有其他方法可以解决我的问题吗?

最佳答案

如果您尝试支持所有尺寸,为什么不将高度也设置为 % 值?

在回答您的问题时,您需要考虑的主要事情是Ti.Platform.displayCaps.platformHeight 以特定于平台的单位返回值;所以Android上的像素和iOS上的密度无关像素(dip)。由于您使用与密度无关的像素设置 View 高度,因此您希望将这些平台单位转换为与密度无关和与平台无关的单位。

我通常只使用 measurement library provided由钛合金制成。

var measurement = require('alloy/measurement');
var dpHeight = measurement.pxToDP(Ti.Platform.displayCaps.platformHeight);
if(460 < dpHeight) {
alert('Fits');
} else {
alert("does not fit');
}

但实际上我发现仅使用具有百分比值的相对布局要容易得多。

另一种确定 View 是否在边界内(事后)的方法是添加一个 postlayout event listener,当这个事件被触发时,它意味着布局边界已经以系统单位计算并且现在可以访问:

view.addEventListener('postlayout', function(e) {
if(view.rect.height + view.rect.y > Ti.Platform.displayCaps.platformHeight) {
alert('Does not fit")
}
});

关于android - 检查元素是否适合屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20125692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com