@@ -31,6 +31,8 @@ import androidx.compose.foundation.layout.WindowInsetsSides
31
31
import androidx.compose.foundation.layout.asPaddingValues
32
32
import androidx.compose.foundation.layout.consumeWindowInsets
33
33
import androidx.compose.foundation.layout.fillMaxSize
34
+ import androidx.compose.foundation.layout.fillMaxWidth
35
+ import androidx.compose.foundation.layout.fitInside
34
36
import androidx.compose.foundation.layout.ime
35
37
import androidx.compose.foundation.layout.imePadding
36
38
import androidx.compose.foundation.layout.navigationBars
@@ -49,9 +51,12 @@ import androidx.compose.material3.Scaffold
49
51
import androidx.compose.material3.Text
50
52
import androidx.compose.material3.TextField
51
53
import androidx.compose.runtime.Composable
54
+ import androidx.compose.ui.Alignment
52
55
import androidx.compose.ui.Alignment.Companion.BottomCenter
53
56
import androidx.compose.ui.Modifier
57
+ import androidx.compose.ui.layout.RectRulers
54
58
import androidx.compose.ui.layout.WindowInsetsRulers
59
+ import androidx.compose.ui.layout.innermostOf
55
60
import androidx.compose.ui.layout.layout
56
61
import androidx.compose.ui.tooling.preview.Preview
57
62
import androidx.compose.ui.unit.Constraints
@@ -208,3 +213,53 @@ fun Modifier.alignToSafeDrawing(): Modifier {
208
213
}
209
214
}
210
215
// [END android_compose_insets_rulers]
216
+
217
+ // [START android_compose_insets_fit_inside]
218
+ @Composable
219
+ fun FitInsideDemo (modifier : Modifier ) {
220
+ Box (
221
+ modifier = modifier
222
+ .fillMaxSize()
223
+ // Or DisplayCutout, Ime, NavigationBars, StatusBar, etc...
224
+ .fitInside(WindowInsetsRulers .SafeDrawing .current)
225
+ )
226
+ }
227
+ // [END android_compose_insets_fit_inside]
228
+
229
+ // [START android_compose_insets_rulers_ime]
230
+ @Composable
231
+ fun FitInsideWithImeDemo (modifier : Modifier ) {
232
+ Box (
233
+ modifier = modifier
234
+ .fillMaxSize()
235
+ .fitInside(
236
+ RectRulers .innermostOf(
237
+ WindowInsetsRulers .NavigationBars .current,
238
+ WindowInsetsRulers .Ime .current
239
+ )
240
+ )
241
+ ) {
242
+ TextField (
243
+ value = " Demo IME Insets" ,
244
+ onValueChange = {},
245
+ modifier = modifier.align(Alignment .BottomStart ).fillMaxWidth()
246
+ )
247
+ }
248
+ }
249
+ // [END android_compose_insets_rulers_ime]
250
+
251
+ // [START android_compose_insets_rulers_status_caption_bars]
252
+ @Composable
253
+ fun FitInsideWithStatusAndCaptionBarDemo (modifier : Modifier ) {
254
+ Box (
255
+ modifier = modifier
256
+ .fillMaxSize()
257
+ .fitInside(
258
+ RectRulers .innermostOf(
259
+ WindowInsetsRulers .StatusBars .current,
260
+ WindowInsetsRulers .CaptionBar .current
261
+ )
262
+ )
263
+ )
264
+ }
265
+ // [END android_compose_insets_rulers_status_caption_bars]
0 commit comments