在 Android TV 上,我使用 Jetpack Compose,其中卡大小在 720p(模拟器)和 1080p(模拟器)电视上看起来不同。
卡代码:
...
Card(
modifier = Modifier
.width(412.dp)
.height(200.dp),
border = CardDefaults.border(border = Border.None),
colors = CardDefaults.colors(
containerColor = ColorTokens.grey_40,
contentColor = ColorTokens.white,
focusedContainerColor = Color.White,
focusedContentColor = Color.Black,
pressedContainerColor = Color.Gray,
pressedContentColor = Color.LightGray
),
shape = CardDefaults.shape (shape = RoundedCornerShape(CornerRadiusTokens.radius_300.withDPIOffset(LocalContext.current))),
onClick = { /*TODO*/ },
)
...
我希望这些卡片在两个屏幕上看起来都是一样的dp
。我缺少什么?
问题是我们的设计是针对 1080p 屏幕进行的,所有 UI 元素值均以像素 (px) 为单位,而不是 dp。这意味着,如果您尝试在不同的屏幕上使用 200px,那么它看起来显然会有所不同。
因此,为了支持1080p和720p屏幕,需要将尺寸从1080屏幕调整到720屏幕。
这是函数:
用法:
如果我错过了什么,请告诉我:)