2015-07-06 12 views
5

Sono di fronte a alcuni problemi quando si tenta di impostare una barra di stato trasparente nella mia app mentre si utilizza la nuova libreria di progettazione di supporto Android.Barra di stato non trasparente quando si utilizza la nuova libreria di progettazione di supporto

In particolare, sto usando la combinazione CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout + Toolbar con questo ordine gerarchico.

Ho notato che la barra di stato viene prima trasparente, quindi posso vedere la traduzione da trasparente a full black.

faccio questo in valori/stili:

<item name="android:windowTranslucentStatus">true</item> 

E questo a mio layout:

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    android:elevation="4dp" 
    android:background="?android:colorPrimary" 
    android:layout_width="match_parent" 
    android:layout_height="128dp"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsingToolbarLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     app:expandedTitleMarginStart="64dp"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:minHeight="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    </android.support.design.widget.CollapsingToolbarLayout> 

</android.support.design.widget.AppBarLayout> 

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

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="16dp" 
      android:layout_marginEnd="16dp" 
      app:cardCornerRadius="4dp" 
      app:cardElevation="6dp"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Latest Stories"/> 

       <TextView 
        android:id="@+id/latest_story_title" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Title Example"/> 

       <TextView 
        android:id="@+id/latest_story_preview" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Content Example, this should be around 250 chars"/> 

      </LinearLayout> 

     </android.support.v7.widget.CardView> 

    </LinearLayout> 

</android.support.v4.widget.NestedScrollView> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab_add_story" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:fabSize="normal" 
    app:layout_anchor="@id/appbar" 
    app:layout_anchorGravity="bottom|right|end" 
    app:borderWidth="0dp" 
    android:layout_margin="16dp"/> 

<View 
    android:id="@+id/ripple_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:visibility="visible" 
    android:elevation="10dp" 
    android:stateListAnimator="@null" 
    android:clickable="false"/> 

(Ci scusiamo per la formattazione terribile, sembra che SO Editor non collaborare)

Sarà risolto in una versione futura o c'è un modo per aggirare questo ?

Grazie a tutti.

+2

Stai provando getWindow(). AddFlags (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)? http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_TRANSLUCENT_STATUS – krystian71115

+0

Grazie, ha funzionato. Ero a conoscenza di questa linea di codice, ma in alcune delle mie altre app non era necessario in qualche modo. Per favore scrivi questo come risposta in modo che io possa attaccarlo come accettato! :) – Matteo

risposta

2

aggiungi a linee a valori/styles.xml

 <style name="MyTheme" parent="Base.MyTheme"></style> 


    <style name="Base.MyTheme" parent="Theme.AppCompat.Light.NoActionBar">  
    <item name="colorPrimary">@color/primary_500</item> 

    <item name="colorPrimaryDark">@color/primary_700</item> 

    <item name="colorAccent">@color/accent_500</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowActionBarOverlay">true</item> 
    <item name="windowNoTitle">true</item> 
     <item name="android:windowBackground">@color/background_material_light</item> 

Aggiungi di seguito il codice per i valori-V21/styles.xml

<style name="MyTheme" parent="Base.MyTheme"> 
 <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
</style> 

Nota: È possibile impostare solo lo stato traslucido con questo metodo su Lollipop e sopra le API

Imposta il tema del livello applicazione su MyThe Mi

+0

La barra di stato traslucido è supportata da api 19. Questo è kitkat no lollipop. – krystian71115

+0

Vedere quanto segue: http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_TRANSLUCENT_STATUS – krystian71115

+0

Ma non è possibile impostare la barra di stato traslucida per kitkat tramite il codice precedente. Ho appena dato lo snippet di codice per Lollipop e per il dispositivo lollipop. Ci sono alcune librerie esterne disponibili come systemtintedstatusbar per fornire effetti traslucidi sui dispositivi KitKat – Hvn