web-dev-qa-db-fra.com

Barre d'état translucide sous Android

J'utilise la disposition suivante (main_activity.xml)

<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fitsSystemWindows="true">

<Android.support.v4.widget.NestedScrollView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fitsSystemWindows="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_margin="@dimen/text_margin"
        Android:fitsSystemWindows="true"
        Android:text="@string/large_text" />
</Android.support.v4.widget.NestedScrollView>
</Android.support.design.widget.CoordinatorLayout>

Avec les styles suivants-v21

<resources>
<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="Android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="Android:statusBarColor">@Android:color/transparent</item>
    <item name="Android:windowTranslucentStatus">true</item>
    <item name="Android:windowTranslucentNavigation">true</item>
</style>
</resources>

Mais je ne peux toujours pas archiver une barre d'état transparente

Ça ressemble à ça

 Non-Transparent

Mais je veux quelque chose comme ça (nouvelle application Google Newsstand)

 Transparent status bar

Note: j'utilise

compile 'com.Android.support:appcompat-v7:25.1.1'
compile 'com.Android.support:support-v4:25.1.1'
compile 'com.Android.support:design:25.1.1'
3
ThunderRoid

essaye ça:

ajoutez ceci dans le thème de votre application:

<item name="Android:windowTranslucentStatus">true</item>
<item name="Android:windowTranslucentNavigation">true</item>

Définissez Android:fitsSystemWindows=”true” sur le conteneur racine

Maintenant dans votre activité onCreate ():

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat) {
        Window w = getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    }

Mis à jour, Résultat:

 enter image description here

vous pouvez faire le snackbar dessiner en haut de l'écran:

Snackbar snack = Snackbar.make(parentLayout, str, Snackbar.LENGTH_LONG);
View view = snack.getView();
FrameLayout.LayoutParams params =(FrameLayout.LayoutParams)view.getLayoutParams();
params.gravity = Gravity.TOP;
view.setLayoutParams(params);
snack.show();

Pour plus d'informations, voir ici

17
rafsanahmad007
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Window window = getWindow();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.setStatusBarColor(Color.TRANSPARENT); } }

}

Utilisez ceci dans votre activité. Mais changer la couleur de la barre d'état n'est autorisé qu'après Android L

5
Arpan Sharma

Ajoutez ces deux lignes dans l'activité onCreate pour laquelle vous voulez que sa barre d'état de disposition soit transparente

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat) {
getWindow().setStatusBarColor(Color.TRANSPARENT);
}

Pas besoin de changer le thème de votre application ou la mise en page XML. Ce faisant, votre barre n'a pas besoin d'être transparente dans l'ensemble de votre application si vous ne le souhaitez pas.

1
NaturallyAsh

Le code ci-dessous rend la barre d'état transparente mais la barre de navigation est opaque pour API21 +. 

REMARQUE: vous ne devriez pas configurer Android:fitsSystemWindows="true".

override fun onCreate(savedInstanceState: Bundle?) {
      setupContentWindow()
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)
}

fun setupContentWindow() {
    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
    window.statusBarColor = Color.TRANSPARENT
    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
0
dgngulcan