Obwohl this answer könnten das erwartete Verhalten erreichen, wie Sie unten in den Kommentaren lesen können: "Dieser Hack funktioniert nicht Arbeiten an einigen Geräten ". Ich habe einen anderen Weg nach Adneal's answer gefunden, der mir den Schlüssel und vor allem den richtigen Weg gibt.
Lower API: Verwendung id R.id.up die zugehörige ImageView
abzurufen.
API> = 14: Holen Sie die relative Parent
of Home ImageView
(android.R.id.home) und das erste Kind abrufen, das ist die UpIndicator
(android.R.id.up).
Dann wird dieses Snippet-Code ändert sich dynamisch der 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));
}
Ich habe nicht auf mehreren Geräten getestet (das ist, warum ich bin nicht sicher, dies oben Code für alle Geräte funktioniert), aber diese scheint in APIs, die in the update part here erwähnt werden, großartig zu funktionieren.
Hinweis: Wenn Sie nicht den Unterschied zwischen höheren und niedrigeren APIs machen, werden Sie eine Nullpointer bekommen, weil R.id.up
in höheren API nicht verfügbar ist, während android.R.id.up
in niedriger API nicht verfügbar ist.
Obwohl Ressource (UPID) gefunden wird, und neue Imageview definiert, bei Galaxy S3 Gerät nicht funktioniert hacken. Wie auch immer, wenn ich bei Nexus 4 getestet habe, funktioniert es gut. – seufagner