Как убрать верхнюю строку состояния черного фона - PullRequest
0 голосов
/ 29 мая 2019

Я бы хотел создать ИСТИННОЕ полноэкранное действие, но в верхней части экрана всегда есть черная строка состояния.Android 9.0.

Я перепробовал почти все, что могу найти в Google и существующих приложениях с похожими заданиями.Манифест, код, стиль, пример полноэкранного режима AS, все были опробованы.

styles.xml:

    <style name="AppThemeA" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:statusBarColor">@android:color/transparent</item>
        <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="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">true</item>
    </style>

Манифест:

<activity android:name=".ScreenActivity" android:theme="@style/AppThemeA" />

Макет:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/rootLayout"
        android:fitsSystemWindows="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

Kotlin (закомментированные строки опробованы и не пройдены):

class ScreenActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        //setTheme(R.style.AppThemeDetector)
        super.onCreate(savedInstanceState)


        //window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
        //window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
        //window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or View.SYSTEM_UI_FLAG_FULLSCREEN

        /*
        window.decorView.systemUiVisibility = (
                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        or View.SYSTEM_UI_FLAG_FULLSCREEN
                )*/

        setContentView(R.layout.activity_screen_detector)
        ...
    }
}

Ожидаемый результат:
expected

Что я на самом делеполучил:
actual

[[[[Solution]]]]

Нашел, что вызвало это.Вы должны установить приложение в полноэкранный режим в Настройках -> Дисплей.

https://www.gottabemobile.com/how-to-enable-full-screen-apps-on-galaxy-s10

Исправлено.Спасибо за вашу помощь.

Ответы [ 3 ]

1 голос
/ 29 мая 2019

В дополнение к вашему коду вам просто нужно добавить этот код перед вашим setContentView в вашей деятельности

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
0 голосов
/ 29 мая 2019

Вот способ реализации сквозного отображения, начиная с Android Q. Код вдохновлен этим блогом .

Во-первых, в вашем styles.xml измените AppTheme как:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        ...
    <item name="android:navigationBarColor">@android:color/transparent</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

Предположим, нам нужно сделать полноэкранный MainActivity, затем в MainActivity.kt:

window.decorView.systemUiVisibility = (
                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        or View.SYSTEM_UI_FLAG_FULLSCREEN
                )

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

0 голосов
/ 29 мая 2019

Попробуйте это:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(getResources().getColor(R.color.colorPrimary));
} else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
    Window window = mContext.getWindow();
    window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
    WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    int statusBarHeight = (int) dpToPx(24);

    View view = new View(mContext);
    view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));
    view.getLayoutParams().height = statusBarHeight;
    ((ViewGroup) window.getDecorView()).addView(view);
     view.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
}

dpToPx

public float dpToPx(float dp) {
    return (dp * Resources.getSystem().getDisplayMetrics().density);
}
...