Materialdrawer: Não consigo deixar a barra de status totalmente transparente

Criado em 23 abr. 2015  ·  15Comentários  ·  Fonte: mikepenz/MaterialDrawer

Olá,

Desejo definir a cor de fundo da barra de status como completamente transparente. Mas eu não posso mudar, fica meio transparente (preto), eu simplesmente não consigo mudar.

Eu tentei colocá-los no meu tema

   <style name="AppThemeMeterialCompat" parent="MaterialDrawerTheme.Light.DarkToolbar.TranslucentStatus">
   <item name="colorPrimaryDark"><strong i="8">@android</strong>:color/transparent</item>
   <item name="android:windowTranslucentNavigation">true</item>
   <item name="android:windowNoTitle">true</item>
   <item name="android:windowTranslucentStatus">true</item>
   </style>

e eles no construtor

     .withTranslucentStatusBar(true)
     .withFullscreen(true)

Por favor ajude

question

Comentários muito úteis

@buraktamturk você pode conseguir isso fazendo o seguinte:

<strong i="7">@Override</strong>
    protected void onCreate(Bundle savedInstanceState) {
        ...

        //make full transparent statusBar
        if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) {
            setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true);
        }
        if (Build.VERSION.SDK_INT >= 19) {
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        }
        if (Build.VERSION.SDK_INT >= 21) {
            setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false);
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
    }

    public static void setWindowFlag(Activity activity, final int bits, boolean on) {
        Window win = activity.getWindow();
        WindowManager.LayoutParams winParams = win.getAttributes();
        if (on) {
            winParams.flags |= bits;
        } else {
            winParams.flags &= ~bits;
        }
        win.setAttributes(winParams);
    }

Todos 15 comentários

@buraktamturk qual telefone você usa?

Você tentou apenas com Fullscreen?

O fato é que isso é gerenciado pelo Android e é realmente difícil torná-lo totalmente transparente.

Se você deseja gerenciar tudo sozinho e só precisa do conteúdo do DrawerLayout. em seguida, use o método .buildView () que fornecerá a você o contentView, que pode ser aumentado dentro do DrawerLayout

Estou usando o Nexus 5 com Android versão 5.1.

Agora tentado apenas withFullscreen e withFullscreen e sem personalização no Tema, acontece a mesma coisa.

Acho que este commit deveria ter resolvido meu problema. Não tenho certeza se abaixo deste comentário

//if we are fullscreen disable the ScrimInsetsLayout

é acionado ou não

Editar: commit https://github.com/mikepenz/MaterialDrawer/commit/c2707aa2e56751b184e48f5128318dd8f07f7c42

@buraktamturk você pode conseguir isso fazendo o seguinte:

<strong i="7">@Override</strong>
    protected void onCreate(Bundle savedInstanceState) {
        ...

        //make full transparent statusBar
        if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) {
            setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true);
        }
        if (Build.VERSION.SDK_INT >= 19) {
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        }
        if (Build.VERSION.SDK_INT >= 21) {
            setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false);
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
    }

    public static void setWindowFlag(Activity activity, final int bits, boolean on) {
        Window win = activity.getWindow();
        WindowManager.LayoutParams winParams = win.getAttributes();
        if (on) {
            winParams.flags |= bits;
        } else {
            winParams.flags &= ~bits;
        }
        win.setAttributes(winParams);
    }

Muito obrigado! Funcionou!

@buraktamturk sem problema: P

Isso não funciona na atividade inicial se o tema for Theme.Translucent.NoTitlebar

Obrigado amigo está funcionando

seu trabalho thanxz e eu quero mudar minha cor do ícone da barra de status. é possível. Mikepenz

@mikepenz Obrigado pela resposta :), mas estou tendo dificuldade em entender o que acontece aqui. Você pode explicar o que acontece, especialmente

 if (on) {
            winParams.flags |= bits;
        } else {
            winParams.flags &= ~bits;
        }

e ou está aqui. Eu não entendo muito bem, por que nós os usamos?
View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)

@pesjak, esta resposta está desatualizada. consulte o aplicativo de amostra para várias implementações, incluindo uma com um comportamento de tela inteira.

as bandeiras são btw. simples android aqui. e o "|" e assim por diante são operações binárias

Para a tela inteira, encontrei https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/FullscreenDrawerActivity.java , e você comentou. Mas o resultado não é o que desejo: /. Estive olhando para o aplicativo de amostra, mas não consigo encontrar o mesmo resultado. Este é o resultado que o código comentado dá https://i.stack.imgur.com/oq38g.png que é exatamente o que eu quero 💃.
Você sabe qual é a resposta atualizada se não for muito problema, porque eu não consigo encontrar :(

se funcionar para você com o código comentado, use-o.
Basicamente, essas coisas não são relevantes para a biblioteca.

A biblioteca usa um DrawerLayout normal e o exemplo apenas mostra uma visão de casos diferentes.

tudo o que você pode conseguir com um DrawerLayout normal pode ser feito com esta biblioteca.

As coisas relevantes ainda devem ser pesquisadas nos documentos do Android ou em fontes alternativas.

Muito obrigado pela ajuda.

Atenciosamente, Primoz

Na segunda-feira, 8 de outubro de 2018, 19:07 Mike Penz, [email protected] escreveu:

se funcionar para você com o código comentado, use-o.
Basicamente, essas coisas não são relevantes para a biblioteca.

A biblioteca usa um DrawerLayout normal e o exemplo mostra apenas um
ver casos diferentes.

tudo o que você pode conseguir com um DrawerLayout normal pode ser feito
com esta biblioteca.

As coisas relevantes ainda devem ser pesquisadas nos documentos do Android ou
fontes alternativas.

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/mikepenz/MaterialDrawer/issues/254#issuecomment-427910073 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AG44ygAITvqnJ00xNXLuURwvijLHfKwvks5ui4ZjgaJpZM4EHL2_
.

Não funciona para mim ter API 19, no meu caso, não funciona este código

public static void setWindowFlag(Activity activity, final int bits, boolean on) { Window win = activity.getWindow(); WindowManager.LayoutParams winParams = win.getAttributes(); if (on) { winParams.flags |= bits; } else { winParams.flags &= ~bits; } win.setAttributes(winParams); }

me ajude

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

armoun picture armoun  ·  3Comentários

fuentepa picture fuentepa  ·  3Comentários

HanderWei picture HanderWei  ·  3Comentários

Erwinstein picture Erwinstein  ·  3Comentários

AlexMercier picture AlexMercier  ·  3Comentários