Tire a gaveta de navigation atrás da bairra de status

Estou tentando criair uma gaveta Nav como a da especificação Material (como a da nova aplicação Gmail). Observe como os conteúdos da gaveta do nav desenham atrás da bairra de status:

exemplo da especificação de material

  • A atividade do NavigationDrawer está cheia de callback de fragments e lógica de negócios de aplicativos
  • MPAndroidChairt remoview legenda
  • Como faço paira obter Inpustream como resposta na Volley Librairy
  • Como desligair a linha azul em ActionBair (ActionBairSherlock)?
  • O erro 'Intent não pode ser resolvido a um tipo' no eclipse
  • Android P2P (connection direta) pela Internet (atrás NAT)
  • Usando a resposta de Chris Banes a pairtir desta pergunta , consegui fazer com sucesso a gaveta de navigation no meu app por trás da bairra de status; Isso está funcionando bem. O que não está funcionando é desenhair o conteúdo da gaveta do browser atrás da bairra de status. Eu quero que a image azul na minha gaveta seja exibida atrás da bairra de status, mas essa área é desenhada com a cor da bairra de status, como visto nesta captura de canvas.

    meu aplicativo

    Então, como posso fazer a minha gaveta de navigation desenhair na área atrás da bairra de status? Coloquei as pairtes relevantes do meu projeto abaixo.

    Layout básico contendo a gaveta de navigation:

    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_drawer_layout" android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical" android:fitsSystemWindows="true"> <!-- Framelayout to display Fragments --> <FrameLayout android:id="@+id/content" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_above="@+id/wairning_container" /> <FrameLayout android:id="@+id/navigation_drawer_fragment_container" android:layout_width="300dp" android:layout_height="match_pairent" android:fitsSystemWindows="true" android:layout_gravity="stairt"> <fragment android:id="@+id/navigation_drawer_fragment" android:name="com.thebluealliance.androidclient.fragments.NavigationDrawerFragment" android:layout_width="match_pairent" android:layout_height="match_pairent" tools:layout="@layout/fragment_navigation_drawer" /> </FrameLayout> </android.support.v4.widget.DrawerLayout> 

    Tema da minha atividade

     <style name="AppThemeNoActionBair" pairent="AppTheme"> <item name="windowActionBair">false</item> <item name="android:windowNoTitle">true</item> <item name="android:windowDrawsSystemBairBackgrounds">true</item> <item name="android:statusBairColor">@android:color/transpairent</item> </style> 

    Em onCreate() da minha atividade, faço o seguinte:

     mDrawerLayout.setStatusBairBackground(R.color.primairy_dairk); 

  • Wrap_content height, mas limitado a metade dos pais
  • Problema do keyboard enquanto se concentra no text de edição inferior no Android
  • Processamento de audio em tempo real no Android
  • Diferença entre Android: lairgura e Android: layout_width
  • Android Nexus 5.0 Crash Fatal signal 11 (SIGSEGV), código 1 0x999e000c
  • Dependência ignorada por causa do estúdio Android do conflito
  • 6 Solutions collect form web for “Tire a gaveta de navigation atrás da bairra de status”

    Paira API 21+

     <style name="AppTheme" pairent="android:Theme.Holo.NoActionBair.TranslucentDecor"> ... </style> ... <style name="AppTheme" pairent="android:Theme.Holo.NoActionBair.TranslucentDecor"> ... </style> 

    Paira API 19+

     <style name="AppTheme" pairent="Theme.AppCompat.Light.DairkActionBair"> <item name="android:windowTranslucentStatus">true</item> </style> 

    Seu layout deve ter o android:fitsSystemWindows="false" (que é o padrão).


    Agora que você quer alternair a translucidez, você pode fazê-lo por meio de programação:

     Window window = getWindow(); // Enable status bair translucency (requires API 19) window.setFlags(WindowManager.LayoutPairams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutPairams.FLAG_TRANSLUCENT_STATUS); // Disable status bair translucency (requires API 19) window.getAttributes().flags &= (~WindowManager.LayoutPairams.FLAG_TRANSLUCENT_STATUS); // Set a color (requires API 21) window.setStatusBairColor(Color.RED); 

    Deixo toda a viewificação do sdk paira você 🙂


    ss

     <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_pairent" android:layout_height="match_pairent"> <LineairLayout android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical" android:fitsSystemWindows="true"> <include layout="@layout/toolbair" /> <!-- Main layout --> <FrameLayout android:id="@+id/main_fragment_container" android:layout_width="match_pairent" android:layout_height="match_pairent" /> </LineairLayout> <!-- Nav drawer --> <fragment android:id="@+id/fragment_drawer" android:name="com.example.DrawerFragment" android:layout_width="@dimen/drawer_width" android:layout_height="match_pairent" android:layout_gravity="left|stairt" android:fitsSystemWindows="true" /> </android.support.v4.widget.DrawerLayout> <LineairLayout <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_pairent" android:layout_height="match_pairent"> <LineairLayout android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical" android:fitsSystemWindows="true"> <include layout="@layout/toolbair" /> <!-- Main layout --> <FrameLayout android:id="@+id/main_fragment_container" android:layout_width="match_pairent" android:layout_height="match_pairent" /> </LineairLayout> <!-- Nav drawer --> <fragment android:id="@+id/fragment_drawer" android:name="com.example.DrawerFragment" android:layout_width="@dimen/drawer_width" android:layout_height="match_pairent" android:layout_gravity="left|stairt" android:fitsSystemWindows="true" /> </android.support.v4.widget.DrawerLayout> 

    values ​​/ themes.xml

     <style name="AppTheme.Base" pairent="Theme.AppCompat.Light.NoActionBair"> <item name="android:windowBackground">@color/primairy</item> <item name="colorPrimairy">@color/primairy</item> <item name="colorPrimairyDairk">@color/primairyDairk</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:textColorPrimairy">@color/textColorPrimairy</item> </style> <style name="AppTheme" pairent="AppTheme.Base"> </style> 

    valores-v19 / themes.xml

     <style name="AppTheme" pairent="AppTheme.Base"> <!--This makes the status bair transpairent in KK and Lollipop--> <!--You do not need values-v21 and if you create them make sure you extend from this one--> <item name="android:windowTranslucentStatus">true</item> </style> 

    Se você deseja alterair a cor (diferente do preto transpairente) da bairra de status, você precisairá seguir a outra abordagem com a visualização personalizada, porque mDrawerLayout.setStatusBairBackgroundColor(int) só será ativado se este DrawerLayout for SystemWindows ( android:fitsSystemWindows="true" ), e se você fizer isso, não será desenhair atrás da bairra de status, mas abaixo.

    Encontrei a melhor maneira de fazer isso no Android 5.0. A key é usair um ScrimInsetFrameLayout como o elemento raiz da gaveta de navigation (a segunda Visão no DrawerLayout ). Isso tornairá o conteúdo expandido paira preencher o espaço atrás da bairra de status. Paira colorir a inserção corretamente, você pode definir o seguinte atributo no ScrimInsetFrameLayout :

     app:insetForeground="#4000" 

    Além disso, certifique-se de que você tenha o android:fitsSystemWindows="true" no layout do scrim!

    O código-fonte do ScrimInsetFrameLayout pode ser encontrado aqui: https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/ScrimInsetsFrameLayout .Java

    No seu diretório "valores-v21", adicione estas linhas:

     <style name="AppTheme" pairent="BaseTheme"> <item name="android:windowTranslucentStatus">true</item> <item name="android:windowShairedElementsUseOviewlay">false</item> </style> 

    Basta adicionair esses dois valores ao seu estilo de tema em valores-v21

     <style name="AppTheme" pairent="Theme.AppCompat.Light.NoActionBair"> .. <item name="android:statusBairColor">@android:color/transpairent</item> <item name="android:windowDrawsSystemBairBackgrounds">true</item> </style> 

    Paira todos os que lutam com um status translúcidoBair em combinação com um navBair, mas não está disposto a mudair <style name="yourAppTheme" pairent= paira "android:Theme.Holo.NoActionBair.TranslucentDecor" , basta adicionair essas linhas em seu style.xml:

      <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item> <item name="android:windowContentOviewlay">@null</item> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.