Anche se this answer potrebbe ottenere il comportamento previsto, come si può leggere nei commenti qui sotto: "Questo hack non funziona su alcuni dispositivi ". Ho trovato un altro modo in base a Adneal's answer che mi dà l'indizio e specialmente il modo giusto di fare. API
inferiore: l'uso id R.id.up per recuperare il relativo ImageView
.
API> = 14: ottenere la relativa Parent
di casa ImageView
(android.R.id.home) e recuperare il primo figlio, che è il UpIndicator
(android.R.id.up).
Poi, questo frammento di codice cambia in modo dinamico la UpIndicator
:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// get the parent view of home (app icon) imageview
ViewGroup home = (ViewGroup) findViewById(android.R.id.home).getParent();
// get the first child (up imageview)
((ImageView) home.getChildAt(0))
// change the icon according to your needs
.setImageDrawable(getResources().getDrawable(R.drawable.custom_icon_up));
} else {
// get the up imageview directly with R.id.up
((ImageView) findViewById(R.id.up))
.setImageDrawable(getResources().getDrawable(R.drawable.custom_icon_up));
}
non ho ancora testato su più dispositivi (è per questo che io non sono sicuro che questo codice precedente funziona per tutti i dispositivi), tuttavia questo sembra funzionare bene nelle API menzionate in the update part here.
Nota: se non si fanno la differenza tra API superiori e inferiori, si ottiene un NullPointerException perché R.id.up
non è disponibile in API più elevata, mentre android.R.id.up
non è disponibile in API inferiore.
Sebbene risorse (UPID) viene trovato, e la nuova ImageView definito, al dispositivo Galaxy S3 non incidere opere. Tuttavia, quando ho provato a Nexus 4, funziona bene. – seufagner