在我的应用中,有一个按钮,它的高度需要正好是屏幕高度的0. 2倍,比如屏幕大小是1000 px,那么它的高度应该是200 px,不管屏幕大小是多少,它的高度都应该是屏幕的0. 2倍。
然而,无论我做了什么,我都不能让它在不同的屏幕大小下工作相同。
以下是我的方法:
1)从本地配置使用DP
// Results in very small for Pixel 2 and almost correct in Pixel 6 emulator
// So small that text in the button disappears and
// seem to took 0.1 of the screen rather than 0.2
Column(
verticalArragment = Arrangment.SpaceBetween
){
Text(titleText)
MyButton(
modifier = Modifier.height(
(LocalConfiguration.current.screenHeightDp * 0.2f).dp
)
)
}
2)从上下文中获取高度。displayMetrics
// Results in almost correct on Pixel 2 and very large on Pixel 6 emulators
// So large that more than 0.2 times of the screen height
Column(
verticalArragment = Arrangment.SpaceBetween
){
Text(titleText)
MyButton(
modifier = Modifier.height(
(LocalContext.current.displayMetrics.heightPixels * 0.2f).dp
)
)
}
此外,MyButton与Compose提供的普通按钮没有区别。
与Compose相比,使用GeometryReader或使用MediaQuery.of(上下文)在SwiftUI上执行相同的操作会产生正确的行为。
任何帮助都很感激。
1条答案
按热度按时间zaq34kh61#
我发现了我的错误,尽管我写在了帖子上。我使用的是Compose提供的Button组件,它有自己的填充。这就是为什么它会随着内容(文本)沿着折叠。我已经将它改为Surface并实现了我的自定义按钮,一切都很好。