ActionBarのロゴの表示/非表示を切り替える。
最近はActionBarを利用していないアプリはめっきり見かけなくなったこの頃。
ActionBarを利用してて、ActionBar.setLogo メソッドを利用して、Fragmentごとにロゴを表示したり、非表示にしたりしたいと思い色々調べたら、なかなかうまく表示されなかったので、まとめておく。
動作
ホーム画面だけロゴを出す。左メニュー(Navigation Drawer)を利用してFragmentを切り替えた時に、ホーム画面以外の場合はアイコンとページ名をActionBarに表示させる。
画面イメージ
Activity
public class BaseActivity extends FragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActionBar().setDisplayShowHomeEnabled(true); getActionBar().setDisplayShowCustomEnabled(true); getActionBar().setLogo(R.drawable.logo_white); // ホーム画面のロゴ getActionBar().setIcon(R.drawable.icon_menu_popular); // ホーム以外で表示するアイコン getActionBar().setDisplayUseLogoEnabled(false); // ロゴを非表示 } }
ホーム画面のFragment
setDisplayUseLogoEnabledをtrueにすると、アイコンは自然と消えロゴだけが表示されるようだ。
final class HomeFragment extends Fragment { @Override public void onResume() { super.onResume(); getActivity().getActionBar().setTitle(""); // タイトル空 getActivity().getActionBar().setDisplayUseLogoEnabled(true); // ロゴを表示 } }
その他 Fragment
setDisplayUseLogoEnabledで、ロゴを非表示にするだけで、Activityでセットしたアイコンが表示される。
final class PopularFragment extends Fragment { @Override public void onResume() { super.onResume(); getActivity().getActionBar().setTitle("注目ユーザー"); // タイトル getActivity().getActionBar().setDisplayUseLogoEnabled(false); // ロゴを非表示 } }