うさがにっき

読書感想文とプログラムのこと書いてきます

CustomViewをActionBarに使って、HomeAsUpを有効にする方法

概要

ActionBarにCustomViewを使うと、ActionBar.DISPLAY_HOME_AS_UPを設定してもタイトルの「<」の戻るボタンが表示されない端末がある
それの回避方法

詳細

actionbarに「<」の戻るボタンをおきつつ、customviewを適用してactionbarを自由にlayoutしたい場合以下のようにすることが多い

	final ActionBar ab = getSupportActionBar();

	ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM
			| ActionBar.DISPLAY_HOME_AS_UP);
	ab.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
	View cView = getLayoutInflater().inflate(R.layout.challenge_custom_actionbar, null);
    ab.setCustomView(cView);

これでほとんどの機種では「<」が表示されるが、一部機種(確認できたのはARROWS TAB、一部の2系)では「<」が表示されない
こういう場合はActionBar.DISPLAY_SHOW_HOMEを適用し、アイコンを透過アイコンにする

	final ActionBar ab = getSupportActionBar();

	ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM
			| ActionBar.DISPLAY_HOME_AS_UP
			| ActionBar.DISPLAY_SHOW_HOME);
	ab.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
	View cView = getLayoutInflater().inflate(R.layout.challenge_custom_actionbar, null);
    ab.setCustomView(cView);

Android.xml

	<activity 
	    android:name="….Activity"
	    android:configChanges="orientation|keyboardHidden"
        android:screenOrientation="portrait"
        android:logo="@drawable/transparent_bg"
        android:icon="@drawable/transparent_bg"
	    >
	</activity>

android:logoを透過にしてもアイコンが表示されるケースが多かったのでandroid:iconも透過にしてみたら、「<」だけが表示された