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」は次の瞬間消える。
あれれ?同じですね。ラベルが表示されてる。
しょうがないんですかね。一瞬だし、早いマシンでは見えませんしね。