この回答は期待される動作を達成する可能性がありますが、その下のコメントで読むことができるように、「このハックは一部のデバイスでは機能しません」。アドニールの答えによると、別の方法を見つけました。これは、手がかりと、特に正しい方法を提供してくれます。
次に、このスニペット コードは以下を動的に変更します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));
}
複数のデバイスでテストしていません (そのため、上記のコードがすべてのデバイスで機能するかどうかはわかりません)。
注: 上位 API と下位 API を区別しない場合、R.id.up
は上位 API では使用できandroid.R.id.up
ないが、 は下位 API では使用できないため、NullPointerException が発生します。