Lo background di stile di AppCompat viene propagato all'image all'interno della ToolBar

Context

Sto utilizzando il più recente AppCompat v7 lib (21.0.0) e ho migrato la mia applicazione da ActionBar a ToolBar

  • Controllare quale direzione fosse frenata in un evento Motion e android
  • Ricevitore di trasmissione e ResultReceiver in android
  • Cambiato il comportmento di Android SQLite Journal?
  • È ansible entrare nella modalità di debug per Android quando si esegue il test di junit?
  • android cambia colore di text degli articoli in filettatura
  • Come uscire da un cerchio di tempo dopo un certo tempo?
  • Problema

    1. Le immagini presenti in ToolBar ricevono automaticamente lo stesso background di ToolBar

    Attualmente il SearchBox è una vista personalizzata impostata sulla barra delle azioni (Dalla precedente implementazione) ho intenzione di passare se al SearchView e lo stile di conseguenza, ma sono ancora molto interessato al problema che sto affrontando adesso.

    Img background

    1. Quando premete a lungo una voce di menu nella ToolBar, compare un toast con il text di suggerimento e il text ha lo stesso background di ToolBar.

    Sfondo toast

    Come posso evitare questo?

    Ecco il layout della mia barra degli strumenti e lo stile e il tema

    layout v_toolbar.xml

    <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/MyActionBarStyle"/> 

    Valori / styles.xml

     <style name="MyActionBarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:background">@color/green</item> <item name="android:windowActionBarOverlay">true</item> <!-- Support library compatibility --> <item name="background">@color/green</item> <item name="windowActionBarOverlay">true</item> </style> 

    Tema

     <style name="MyTheme" parent="AppBaseTheme"> <!-- Here we setting appcompat's actionBarStyle --> <!-- <item name="actionBarStyle">@style/MyActionBarStyle</item> --> <item name="windowActionBar">false</item> <!-- ...and here we setting appcompat's color theming attrs --> <item name="colorPrimary">@color/green</item> <item name="colorPrimaryDark">@color/green_dark</item> </style> 

    Soluzione 1 per il problema 1

    La soluzione per il primo problema è impostare uno background trasparente sull'ApplicationView

     android:background="@color/transparent" 

    Questo non risolve il problema del pane tostato.

    Soluzione per entrambi i problemi

    Ho impostato uno background per la ToolBar

     <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/green" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/MyActionBarStyle"/> 

    E non posso definire più il tema del tema.

     <style name="MyActionBarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:windowActionBarOverlay">true</item> <!-- Support library compatibility --> <item name="windowActionBarOverlay">true</item> </style> 

    Come indicato da Chris Banes, uno stile potrebbe essere creato per la barra degli strumenti invece di dichiarare l'android: background.

    Questo risolve il mio problema ma poi mi sembra di avere un altro problema con il fatto che il popupTheme non viene applicato e il mio dropdown di ShareActionMenuItem non ha uno background bianco con text nero. Vedere un'altra domanda qui: AppCompat ToolBar popupTheme non utilizzato nel menu ShareAction Menu

    Forse questo è un errore nella libreria appcompat.

  • android - CoordinatorLayout / NestedScrollView / Hide-Show Barra degli strumenti / edizione con WebView
  • connessione wifi-diretta a peer su Android?
  • Stampare la piramide inversa dei numbers
  • java.lang.UnsatisfiedLinkError: imansible caricare andenginephysicsbox2dextension- Android
  • sendUserActionEvent () è nullo
  • Qual è la durata del token generato Firebase?
  • 2 Solutions collect form web for “Lo background di stile di AppCompat viene propagato all'image all'interno della ToolBar”

    Non dovresti usare il theme come quello:

    • style = local alla barra degli strumenti
    • tema = globale a tutto gonfiato nella barra degli strumenti

    La soluzione alternativa 2, come lo chiami, è un modo corretto. Se si desidera estrarre alcuni valori in uno stile, è ansible farlo come:

     <android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" style="@style/MyDarkToolbar" /> 

    Stile:

     <style name="MyDarkToolbarStyle" parent="Widget.AppCompat.Toolbar"> <item name="android:background">@color/green</item> <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> </style> 

    Non usare mai themes da modificare. Poiché il tema definisce il comportmento generale dell'applicazione. U può utilizzare due methods per questo

    Metodo: 1

    U può specificare direttamente i parametri in appbar.xml come mostrato di seguito

    in appbar.xml

      <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/green" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme=">style/ThemeOverlay.AppCompat.Light"/> 

    Metodo: 2

    puoi usare uno stile come Chris_Banes suggerito nel post precedente

    in appbar.xml:

     <android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" style="@style/MyDarkToolbar" /> 

    in stile:

     <style name="MyDarkToolbarStyle" parent="Widget.AppCompat.Toolbar"> <item name="android:background">@color/green</item> <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> </style> 

    Punti da notare

    Con la nuova barra degli strumenti è ansible applicare uno stile e un tema. Sono diversi! Lo stile è locale nella visualizzazione della barra degli strumenti, ad esempio il colore di background. L'app: il tema è invece globale a tutti gli elementi ui gonfiati nella barra degli strumenti, ad esempio il colore del titolo e delle icone.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.