Как узнать, есть ли у мобильного телефона метка или нет - PullRequest
0 голосов
/ 15 октября 2018

Мне нужно изменить панель инструментов приложения, если есть выемка.Прямо сейчас эта метка скрывает часть содержимого на панели инструментов.

 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP || Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
        setTheme(R.style.AppTheme_NoActionBarHello);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        SystemBarTintManager tintManager = new SystemBarTintManager(this);
        tintManager.setStatusBarTintEnabled(true);
        tintManager.setTintColor(ContextCompat.getColor(this, R.color.white));
    } else initStatusBar();

метод initStatusBar

private void initStatusBar() {

    Window window = getWindow();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        SystemBarTintManager tintManager = new SystemBarTintManager(this);
        tintManager.setStatusBarTintEnabled(true);
        tintManager.setTintColor(ContextCompat.getColor(this, R.color.white));
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        Window w = getWindow(); // in Activity's onCreate() for instance
        w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    }

}

В моем приложении нет панели уведомлений.Сама панель инструментов покрывает всю эту область белым цветом, чтобы добиться этого, используя приведенный выше код для обеспечения ее совместимости.Но метка дает некоторую проблему как свою новую.

Проблема сейчас в Motorola One Power.

Помощь приветствуется.Дай мне знать, если тебе понадобится что-нибудь еще.Спасибо

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Для тех, кто все еще находится в поиске и должен избавиться от этой метки

Разработчики Android действительно приняли во внимание дизайн меток при создании Android Pie .

Но, возможно, производители мобильных устройств не были готовы дождаться релиза Pie , поэтому они разработали метки для устройств Oreo .И у нас возникли проблемы.

В любом случае, теперь я могу работать с узлами с выемками, но опять же только для Pie устройств.Для этого нам просто нужно добавить строку в styles.xml.

<item name="android:windowLayoutInDisplayCutoutMode"> never </item>

Создать новую папку values-v28 в вашем каталоге res, скопировать в нее файл по умолчанию styles.xml и просто добавить выше.одна дополнительная строка в вашей существующей теме.

  • Значения default, shortEdges, never работают следующим образом.

  • Значение never гарантирует, что окно приложения всегда отображается ниже метки, как в альбомном, так и в портретном режиме, страдает от почтового ящика и полностью затемняет области по обеим сторонам метки.

  • Значение shortEdges заставляет окно вашего приложения рисовать по обе стороны от выреза, что делает приложение более захватывающим в полноэкранном режиме.Это оставляет область надреза, которая непригодна для использования.Нет экрана недвижимости впустую!Это прекрасно работает как в альбомной, так и в портретной ориентации.

  • Значение default выбрано по умолчанию. Размер строки состояния изменяется до высоты надреза, и вызывает почтовый ящик как в портретной, так и в вертикальной ориентации.ландшафтный режим.

Благодаря этой статье мне это очень помогло.

0 голосов
/ 15 октября 2018

Вы можете получить объект DisplayCutout следующим образом:

WindowInsets.getDisplayCutout ()

См. этот документ поддержки отображения выреза.

...