Androidアプリでタイトルバーの高さを変える

image

タイトルバーの高さを何で変える必要があるのか? それは、右のような、ボタン付きのタイトルバーを作りたいときに、高さを増やさないと、ボタンが収まらないで、妙なあんばいになってしまうからです。

Android 3.0 - HoneyComb 以降であれば、タイトルは、Action Barという新しいスタイルになって、ボタンでも何でも簡単に設置できるのですが、GingerBread 以前では、タイトルバーをカスタマイズするしかないのです。

カスタムするだけなら簡単で、タイトルバーのレイアウトを記述したレイアウトを、タイトルバーに設定してやるだけです。

@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().requestFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.post_comment);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_with_button);

てな具合でOKなのです。

しかし、標準的なタイトルバーは、TextView一行分程度の高さしかないので、このままでは、ボタンなどの背の高いウィジェットを貼り付けるとレイアウトが崩れてしまうのです。

では、どうするのか? 高さを指定してやればいいのです。具体的には、タイトルの高さを指定するStyleを定義して、高さを変えたいアクティビティにManifest で割り付けてやればいいのです。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="customized_window_title">
        <item name="android:windowTitleSize">40sp</item>
    </style>
</resources>

というように、android:windowTitleSize というアイテムを持ったスタイルを作って、

        <activity android:name=".FBPostMessage" android:theme="@style/customized_window_title"></activity>

のように、割り当ててやるだけ。簡単です。多分、簡単すぎて、当たり前すぎてだと思うのですが、タイトルをカスタマイズする方法に言及しているサイトは数多あるのですけれど、こちらの、タイトルサイズの変更について言及しているサイトはほとんど見当たらないんですよね。

同じお悩みをお持ちの Android開発者がいらっしゃいましたら、ご参考までに。