@@ -31,6 +31,8 @@ import androidx.compose.foundation.layout.WindowInsetsSides
3131import androidx.compose.foundation.layout.asPaddingValues
3232import androidx.compose.foundation.layout.consumeWindowInsets
3333import androidx.compose.foundation.layout.fillMaxSize
34+ import androidx.compose.foundation.layout.fillMaxWidth
35+ import androidx.compose.foundation.layout.fitInside
3436import androidx.compose.foundation.layout.ime
3537import androidx.compose.foundation.layout.imePadding
3638import androidx.compose.foundation.layout.navigationBars
@@ -49,9 +51,12 @@ import androidx.compose.material3.Scaffold
4951import androidx.compose.material3.Text
5052import androidx.compose.material3.TextField
5153import androidx.compose.runtime.Composable
54+ import androidx.compose.ui.Alignment
5255import androidx.compose.ui.Alignment.Companion.BottomCenter
5356import androidx.compose.ui.Modifier
57+ import androidx.compose.ui.layout.RectRulers
5458import androidx.compose.ui.layout.WindowInsetsRulers
59+ import androidx.compose.ui.layout.innermostOf
5560import androidx.compose.ui.layout.layout
5661import androidx.compose.ui.tooling.preview.Preview
5762import androidx.compose.ui.unit.Constraints
@@ -208,3 +213,53 @@ fun Modifier.alignToSafeDrawing(): Modifier {
208213 }
209214}
210215// [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