Come distriggersre il colore di background quando si preme HomeUp?

Sfondo:

HomeUp attualmente il button HomeUp Activity , grazie a:

  • Android ListView aggiornamento delle miniature delle immagini usando le cause di AsyncTask Visualizza il riciclaggio
  • Se la chiamata al metodo superclass sia la prima dichiarazione?
  • riproduzione video full screen
  • Lo stile di Android specifica il colore del button
  • Come fermare un thread in esecuzione quando l'attività viene distrutta a Android?
  • Android: Come modificare la frequenza di riproduzione di musica utilizzando OpenSL ES
  •  getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    Secondo la documentazione , è correlato a setHomeButtonEnabled che:

    Attiva o distriggers il button "home" nell'angolo della barra di azione […] Impostazione dell'opzione di visualizzazione costante di DISPLAY_HOME_AS_UP (metodo setDisplayHomeAsUpEnabled) abilita automaticamente il button Home.

    Inoltre, personalizza con un selector lo stato di background degli elementi in ActionBar con questo stile:

     <style name="MainTheme" parent="@style/Theme.AppCompat.Light"> <item name="android:actionBarItemBackground">@drawable/ab_item_background</item> <item name="actionBarItemBackground">@drawable/ab_item_background</item> </style> 

    Anche se questo funziona bene, non voglio utilizzare un selector disegnabile per il button UpIndicator quando è abilitato UpIndicator .

    Perché ho bisogno di:

    Lo background di ActionBar è grigio (rispetto a Theme.AppCompat.Light ) e il selettore utilizza uno background verde quando vengono premuti gli elementi. Tuttavia, l'icona dell'app è anche verde che, quando viene premuto, si fonde con lo stato premuto in background. Devo evitare questo da non utilizzare un disegno per il background di HomeUp.

    Domanda:

    Come posso raggiungere questo, qualsiasi idea di una soluzione alternativa?

    Gli appunti:

    1. Ho cercato di cercare un attribute correlato che consente di utilizzare uno background personalizzato per l'icona di app e UpIndicator per personalizzare in style.xml ma non l'ho trovato nelle risorse .

    2. Se utilizzo setDisplayHomeAsUpEnabled(true) e setDisplayHomeAsUpEnabled(false) , ho il comportmento previsto per gli elementi del menu (gli sfondi sono cambiati rispetto ai suoi stati), ma il button HomeUp, anche se ho il comportmento corretto con il suo background, non è più abilitato.

    3. Inoltre, voglio evitare di utilizzare un CustomView per l'ActionBar.


    Aggiornare:

    Secondo la risposta di Adneal e dopo prove e ricerche, ecco i risultati:

      _______________________________________________________________________________ | | | | | | API | R.id.home | android.R.id.home | method | |_____|________________________|_________________________|______________________| | | | | | | 8 | OK | -- | getParent() x 1 | | 10 | OK | -- | getParent() x 1 | | 11 | OK | -- | getParent() x 1 | | 12 | OK | -- | getParent() x 1 | | 13 | OK | -- | getParent() x 1 | | 14 | -- | OK | getParent() x 1 | | 15 | -- | OK | getParent() x 1 | | 16 | -- | OK | getParent() x 1 | | 17 | -- | OK | getParent() x 2 | | 18 | -- | OK | getParent() x 2 | | 19 | -- | OK | getParent() x 2 | |_____|________________________|_________________________|______________________| 

    Quindi, la condizione giusta dovrebbe essere:

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { // retrieve the two parents with "android.R.id.home" } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { // retrieve the first parent with "android.R.id.home" } else { // retrieve the first parent with "R.id.home" } 

  • Android, caricando una foto da ospitare su imgur in modo programmato
  • android: due problemi utilizzando Tablerow + TextView in Tablelayout
  • Barra di ricerca personalizzata con disegno materiale
  • Come recuperare le stringhe base64 (grande image) dal server a android
  • Come generare lo spettrogramma di un file wav in Matlab con frequenza sull'asse x
  • get una panoramica di tutti i methods di una class in Eclipse
  • One Solution collect form web for “Come distriggersre il colore di background quando si preme HomeUp?”

    È ansible impostare lo background del button Home su null utilizzando View.getParent .

    Questo è il layout che contiene il button Home , una volta gonfiato in ActionBarView , viene aggiunto al layout del contenitore in su che è quello che utilizza effettivamente l'attributo actionBarItemBackground .

    Tuttavia, AppCompat non utilizza un layout "fino al contenitore", così come il normale ActionBar fino al livello API 18 (Jelly Bean MR2).

    Quindi, per cambiare lo background del button Home, si dovrebbe fare una chiamata a View.getParent quando si utilizza la libreria di supporto oi livelli di API 11-17 di ActionBar , ma due quando si sta modificando il livello di API 18 +.

      View home; final int version = Build.VERSION.SDK_INT; if (version >= Build.VERSION_CODES.JELLY_BEAN_MR2) { // Normal action bar, post-"up container" home = (View) findViewById(android.R.id.home).getParent().getParent(); } else if (version >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { // Normal action bar, pre-"up container" home = (View) findViewById(android.R.id.home).getParent(); } else { // Support library action bar home = (View) findViewById(R.id.home).getParent(); } home.setBackgroundDrawable(null); 

    AppCompat potrebbe essere aggiornato in futuro per includere un layout "in alto", quindi tenere a mente che potrebbe essere necessario regolare il codice in seguito per accontentarlo.

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