Есть ли виджет SafeArea для разработки на Android? - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь занять столько места, сколько доступно на зубчатых устройствах Android. В разработке Flutter есть виджет под названием SafeArea, который автоматически настраивает ваш вид в зависимости от того, имеет ли устройство метку или нет. Даже в iOS разработке всякий раз, когда мы добавляем constraints с использованием storyboard, мы можем добавить его в соответствии с SafeArea. Но я не смог найти ничего похожего в нативной разработке для Android.

В моем styles.xml для v28 я добавил что-то вроде следующего:

 <style name="TPAFTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> 
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item> 
        <item name="android:windowFullscreen">true</item> 
        <item name="android:windowContentOverlay">@null</item> 
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> 
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">true</item>
    </style>  

Но возможно ли определить,Устройство имеет Notch или нет в самом файле макета и настроить макет в соответствии с. Я использую Constraintlayout в моем приложении. Поскольку мое приложение имеет изображение вверху, оно обрезается, если устройство имеет выемку вверху. Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 28 октября 2019

Я наконец нашел ответ. Просто используйте android:fitsSystemWindows="true" в вашем ConstraintLayout или любом другом макете верхнего уровня, который вы используете

0 голосов
/ 28 октября 2019

Я думаю, что правильным вариантом является использование CoordinatorLayout в качестве родителя для вашего ConstraintLayout. CoordinatorLayout делает много вещей, и обработка системной области является одной из них (что я бы сказал, не очевидно ...). Он внутренне устанавливает OnApplyWindowInsetsListener, который вызывается системой с информацией о размерах системных элементов. CoordinatorLayout обрабатывает эти вызовы и устанавливает правильный отступ для своих дочерних элементов. Так что в Android все сложнее, чем в iOS, вам придется к этому привыкнуть ...

Я бы порекомендовал это видео: https://www.youtube.com/watch?v=_mGDMVRO3iE

...