Ich frage mich, wie ich mit Jetpack Compose die Bildschirmbreite und -höhe erhalten kann.
Gibt es eine andere Möglichkeit, die Bildschirmabmessungen abzurufen als
getWindowManager().getDefaultDisplay()
?
AbdulMomen عبدالمؤمن
Ich frage mich, wie ich mit Jetpack Compose die Bildschirmbreite und -höhe erhalten kann.
Gibt es eine andere Möglichkeit, die Bildschirmabmessungen abzurufen als
getWindowManager().getDefaultDisplay()
?
Dies erreichen Sie mit LocalConfiguration.current
:
@Composable
fun PostView() {
val configuration = LocalConfiguration.current
val screenHeight = configuration.screenHeightDp.dp
val screenWidth = configuration.screenWidthDp.dp
...
}
Aus irgendeinem seltsamen Grund gibt mir LocalConfiguration screenWidth im Querformat, obwohl ich von Querformat auf Hochformat umgeschaltet habe. Ist noch jemand mit diesem Problem konfrontiert?
– Ali_Waris
3. Februar um 13:16 Uhr
Wenn Sie die Größe in Pixel erhalten möchten: val screenDensity = configuration.densityDpi / 160f
und zum Beispiel mit dp multiplizieren val screenHeight = configuration.screenHeightDp.toFloat() * screenDensity
. Sie möchten vielleicht round
auch auf eine ganze Zahl. da px ist Int
.
– lenooh
16. Februar um 21:03 Uhr
Wahrscheinlich ein besserer Weg, um die Größe in Pixel zu erhalten: val density = LocalDensity.current; val configuration = LocalConfiguration.current; val screenWidthPx = with(density) {configuration.screenWidthDp.dp.roundToPx()}
– Aragorn Crozier
4. November um 18:41 Uhr
Andere Problemumgehungen umfassen:-
A.) Erklären a BoxWithConstraints
auf der höchsten Ebene der Hierarchie, dann Zugriff auf die maxHeight
und äquivalente Breitenattribute, die innerhalb des Bereichs der Box exponiert sind
B.) Verwenden von benutzerdefinierten Layouts
Layout(
content = { ... }
){ measurables, constraints ->
//Exposes constraints.maxWidth, and a height equivalent
}