Abd*_*ؤمن 103 android android-jetpack-compose
我想知道如何使用 Jetpack Compose 获取屏幕宽度和高度?
除了 之外,还有什么方法可以检索屏幕尺寸吗
getWindowManager().getDefaultDisplay()?
Abd*_*ؤمن 221
您可以通过以下方式实现此目的LocalConfiguration.current:
@Composable
fun PostView() {
val configuration = LocalConfiguration.current
val screenHeight = configuration.screenHeightDp.dp
val screenWidth = configuration.screenWidthDp.dp
...
}
Run Code Online (Sandbox Code Playgroud)
其他解决方法包括:-
A.)BoxWithConstraints在层次结构的最高级别声明 a,然后访问maxHeight在框范围内公开的 和等效宽度属性
B.) 使用自定义布局
Layout(
content = { ... }
){ measurables, constraints ->
//Exposes constraints.maxWidth, and a height equivalent
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我不认为这是最好的方法,但你可以尝试这个:
class Size {
@Composable
fun height(): Int {
val configuration = LocalConfiguration.current
return configuration.screenHeightDp
}
@Composable
fun width(): Int {
val configuration = LocalConfiguration.current
return configuration.screenWidthDp
}
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用这个值:
val size = Size()
val screenHeight = size.height()
Box(modifier = Modifier.height((screenHeigh/2).dp)) {
//content
}
Run Code Online (Sandbox Code Playgroud)
解决方案
我正在使用这种方法来获取ScreenWidth和ScreenHeight。这对我来说效果很好,您也可以使用它来制作响应式 UIJetpack Compose
@Composable
fun ScreenSizeHelper() {
val context = LocalContext.current
val displayMetrics = context.resources.displayMetrics
//Width And Height Of Screen
val width = displayMetrics.widthPixels
val height = displayMetrics.heightPixels
//Device Density
val density = displayMetrics.density
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75931 次 |
| 最近记录: |