Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Afastamento indesejado entre a status bar e a navigation bar

Estou com um problema com a navegação das paginas em alguns dispositivos.

Acredito ser apenas nas versões mais novas do android, fiz testes em emuladores e celulares.

Acontece que minha navegação fica com esse espaço:

http://img15.hostingpics.net/pics/963309FormsAppCompatActivityAnd51WithNavegar.png

E se eu removo a status bar, nos styles, fica ainda mais feio pq fica com o dobro de espaço.

Ja tentei diversas formas e ate agora nada, a unica coisa que reduziu um dos espaços, foi remover a navegação. Porém fica inviável para trocar de páginas.

estou usando uma hierarquia assim:

Navegação1>MasterDetail>navegação2>Detail

A navegação 1 troca entre outras masterdetail e a navegação 2 nas subpaginas daquele determinado assunto.

Agradeço desde já

4 respostas

Olá, Felipe!

Fizemos alguns testes aqui, porém não não conseguimos reproduzir o problema.

Você pode compartilhar o código comigo, no Google Drive ou no GitHub, para investigarmos melhor? Meu e-mail é mclricardo@gmail.com

De qualquer forma, também abri um chamado no fórum da Xamarin com a sua dúvida: (https://forums.xamarin.com/discussion/86568/unwanted-blank-space-above-navigation-bar-navigation-page/p1?new=1) Assim que eles responderem, eu copio a resposta aqui no fórum da Alura.

Boa sorte e bons estudos!

Olá Marcelo!

Obrigado pelo retorno!!

Eu testei no AluraNutrição, e apenas inclui esta linha

this.Window.AddFlags(WindowManagerFlags.Fullscreen);

no MainActivity.cs do android, executei com android 5.0 (Api21).

Vi ali no forum que te responderam sobre ter um stilo especifico para a API21, mas testei em um android MashMallow e o problema se repetiu.

Mesmo que eu criasse stilos personalizados para cada uma dessas api, qual seria a configuração necessária para remover esse afastamento? pois parece que a cada navegação é adicionado este "espaço".

Obrigado, novamente pelo retorno!

solução!

Consegui uma solução!

No MainActivity.cs do android, antes da função base.Oncreate(bundle);

Colocar esse teste:

            if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
            {
                // Kill status bar underlay added by FormsAppCompatActivity
                // Must be done before calling FormsAppCompatActivity.OnCreate()
                var statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("statusBarHeight", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
                if (statusBarHeightInfo == null)
                {
                    statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("_statusBarHeight", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
                }
                statusBarHeightInfo?.SetValue(this, 0);
            }

Agradeço a atenção

Olá, Felipe!

Fico feliz que tenha encontrado uma solução, pelo visto você mergulhou fundo no problema, indo muito além do curso! Problema de compatibilidade de versão é sempre chato e nesse caso um hack é a única saída.

Também vi que você postou essa solução lá no fórum da Xamarin, então vamos aguardar pra ver a opinião dos experts de lá sobre o seu "hack".

Boa sorte e bons estudos!