Pesquisei a documentação, mas só encontrei o seguinte: Link . Qual é usado para tornar a barra translúcida ? O que estou tentando fazer é tornar a barra de status completamente transparente (como mostra a imagem abaixo) e torná-la compatível com versões anteriores do APK <19:
Meus styles.xml:
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ThemeActionBar</item>
<item name="windowActionBarOverlay">true</item>
</style>
<style name="ThemeActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background"> @null </item>
<!-- Support library compatibility -->
<item name="background">@null</item>
<item name="android:displayOptions"> showHome | useLogo</item>
<item name="displayOptions">showHome|useLogo</item>
</style>
</resources>
O que eu pude fazer:
android:fitsSystemWindows="true"
ao meu activity_main.xml. As barras do sistema são translúcidas e não transparentes.<item name="android:statusBarColor">@android:color/transparent</item>
ao seu tema :)android:windowTranslucentStatus
como false e tornou a barra de status transparente. Agora eu fiz a mesma coisa com a barra de navegação e adicionei,<item name="android:navigationBarColor">@android:color/transparent</item>
mas deixa as duas barras cinza. UGH!w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
em vezBasta adicionar esta linha de código ao seu arquivo java principal:
fonte
Você pode usar a biblioteca externa StatusBarUtil :
Adicione ao seu nível de módulo
build.gradle
:Em seguida, você pode usar o seguinte utilitário para uma Atividade para tornar a barra de status transparente:
Exemplo:
fonte
Funciona para Android KitKat e superior (para aqueles que desejam transparente na barra de status e não manipulam a NavigationBar, porque todas essas respostas também transparecem a NavigationBar!)
A maneira mais fácil de conseguir isso:
Coloque essas 3 linhas de código no
styles.xml (v19)
-> se você não souber como obtê-lo (v19), basta escrevê-las no seu padrãostyles.xml
e usar alt+ enterpara criar automaticamente:E agora, vá para sua
MainActivity
classe e coloque este método fora de onCreate na classe:Em seguida, coloque este código no
onCreate
método da atividade:É isso aí!
fonte
Completamente transparente StatusBar e NavigationBar
fonte
Para desenhar seu layout na barra de status:
values / styles.xml
values-v21 / styles.xml
Use o CoordinatorLayout / DrawerLayout que já cuida do parâmetro fitsSystemWindows ou crie seu próprio layout para:
main_activity.xml
Resultado:
Captura de tela:
fonte
Você pode usar o código abaixo para tornar a barra de status transparente. Veja as imagens Com destaque vermelho que ajuda a identificar o uso do código Abaixo
Snippet de código Kotlin para seu aplicativo Android
Etapa: 1 Anote o código no método On create
Etapa 2: você precisa do método SetWindowFlag que descreve no código Abaixo.
Snippet de código Java para seu aplicativo Android:
Etapa 1: Código da Atividade Principal
Etapa 2: Método SetWindowFlag
fonte
Use
android:fitsSystemWindows="false"
no seu layout superiorfonte
Aqui está uma extensão no kotlin que faz o truque:
fonte
Usando este código em seu XML, você poderá ver a barra de tempo em sua atividade:
fonte
Existem três etapas:
1) Basta usar esse segmento de código no seu método @OnCreate
se você estiver trabalhando no Fragment, coloque esse segmento de código no método @OnCreate da sua atividade.
2) Defina também a transparência em /res/values-v21/styles.xml:
Ou você pode definir a transparência programaticamente:
3) De qualquer forma, você deve adicionar o segmento de código em styles.xml
NOTA: Este método funciona apenas na API 21 e acima.
fonte
Você também pode ver meu exemplo com avatar animado e texto animado
CollapsingAvatarToolbarSample
Leia minha postagem no Medium
Então, deixe-me explicar como funciona. Criei o modo de exibição personalizado implementado AppBarLayout.OnOffsetChangedListener . Por dentro do HeadCollapsing Custom View, fundei a exibição de texto e imagem no AppBarLayout.
fonte
Você pode tentar isso.
fonte
Embora todas as respostas acima circulem em torno da mesma idéia fundamental, você pode trabalhar com layouts simples usando um dos exemplos acima. No entanto, eu queria mudar a cor do plano de fundo enquanto usava a navegação em fragmentos deslizante 'tela cheia' (barra de guias à parte) e manter a navegação regular, as guias e as barras de ação.
Depois de ler atentamente um artigo de Anton Hadutski, entendi melhor o que está acontecendo.
Eu tenho
DrawerLayout
comConstraintLayout
(ou seja, contêiner) que temToolbar
, incluir para o fragmento principal eBottomNavigationView
.Definir
DrawerLayout
terfitsSystemWindows
que ser verdadeiro não é suficiente, você precisa definir ambosDrawerLayout
eConstraintLayout
. Supondo uma barra de status transparente, a cor da barra de status agora é igual à cor de segundo planoConstraintLayout
.No entanto, o fragmento incluído ainda possui a barra de status inserida, portanto, animar outro fragmento de 'tela cheia' não altera a cor da barra de status.
Um pouco de código do artigo referido em
Activity
'sonCreate
:E tudo está bem, exceto agora o
Toolbar
não aborda a altura da barra de status. Mais algumas referências ao artigo e temos uma solução totalmente funcional:O main_activity.xml (observe que marginTop in
Toolbar
é para fins de visualização, ele será substituído pelo código):fonte
Eu achei que brincar com styles.xml e atividade era muito complicado, portanto, criei um método de utilitário comum que possui as opções abaixo definidas
Java
Kotlin DSL
E isso foi o suficiente para alcançar uma barra de status transparente. Espero que isto ajude.
fonte
android:fitsSystemWindows="true"
só funciona na v21. Podemos configurá-lo no tema xml ou no layout pai, comoLinearLayout
emCoordinateLayout
. Abaixo da v21, não foi possível adicionar este sinalizador. Por favor, crie uma pasta de valores diferentes com umstyle.xml
arquivo diferente conforme sua necessidade.fonte
Isso funcionou para mim:
fonte
Tudo o que precisamos é entrar em
MainActivity.java
fonte
no meu caso, como eu tenho uma barra de ferramentas inferior, tive um problema ao testar as soluções anteriores, os botões do sistema Android são cobertos pelo meu menu inferior, minha solução é adicionar à atividade:
fonte
Você pode usar este código abaixo.
Inclua esse layout no seu layout principal.
toolbar.xml
Nota: Você pode substituir o SDP e o SSP por dp e sp, respectivamente.
fonte
no meu caso, eu não chamo nada de "onCreate" (é um aplicativo nativo react e isso pode ser corrigido também usando o componente StatusBar react-native) também pode ser usado:
fonte
Isso deve funcionar
// Em Activity onCreate (), por exemplo
fonte
Encontrei a resposta enquanto investigava esta biblioteca: https://github.com/laobie/StatusBarUtil
então você precisa adicionar os seguintes códigos à sua atividade
fonte
adicione essas linhas em sua atividade antes do setContentView ()
adicione estas 2 linhas ao seu AppTheme
e a última coisa que sua minSdkVersion deve ser 19
fonte
Não use o
windowLightStatusBar
usostatusBarColor = @android:color/transparent
fonte
Isso é apenas para o nível da API> = 21. Funciona para mim. Aqui está o meu código (Kotlin)
fonte