Action Bar Compatで一瞬ラベルが表示されてしまう問題

最近Compatibility Packageというライブラリを勉強しています。このライブラリFragmentなどが使えるのでとっても便利なのですが、HoneyComb以降のUIの特徴でもあるActionBarが使えないのが残念な点です。

そこでAndroid SDKのサンプルにCompatibility Packageを使ってActionBarを実現するものがあります。ActionBarCompatというサンプルです。こんな感じの見た目です。HT-03A (2.2.1) 上で実行しています。



このサンプルは使わない手はない!と思っていろいろ見ているんですが、一つ残念な点があります。それは、起動時に一瞬余計なタイトルが表示されてしまうのです。



※MainActivity#onCreate先頭でブレークした時のスクリーンショット


あれれ?ということで調べてみました。
本当のところの理由は分からないけど、どうもAndroidManifest.xmlで記載している次の要素が悪さ (?) しているようです。

<activity android:name=".MainActivity" android:label="@string/app_name">


この「android:label」という属性が表示されていたのです。その証拠にここを適当に変えてみたところ

<activity android:name=".MainActivity" android:label="お前誰だ!?">



やっぱりお前だったか! (笑)
ということで次のように変更します。

<activity android:name=".MainActivity" android:label="">


「起動中・・・」とかでもいいかも。
ちなみに「android:label」属性を消すと余計な表示が表示されてしまいます。


というわけで、ちゃんと仕組みが分かったわけではないけど解決は出来ました。

でもこのままだとタイトルが表示されなくなるので、MainActivity#onCreateでsetTitleするのを忘れずに

後日談

上記の通り「android:label」属性を消してICS機にインストールしたところ、アプリ一覧表示の時に



※ActionBarCompatは左側です。


というようにラベルが表示されませんでした。HT-03Aでは表示してたのに。。。
ということでこの方法はNGです。


でもどうしてもいい方法が見つかりません。
ということで、かの有名なiosched (Google I/O 2011スケジュールアプリ) を見て見たところ、



※ui.HomeActivity#onCreateの先頭でブレークした時のスクリーンショット
※右側の「Google I/O 2011」は次の瞬間消える。


あれれ?同じですね。ラベルが表示されてる。
しょうがないんですかね。一瞬だし、早いマシンでは見えませんしね。