内容へ移動
WildTree Wiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
タイトルバーのカスタマイズ
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== タイトルバーのカスタマイズ ====== ===== 概要 ===== AndroidはHoneyComb(3.0)以降、ActionBarというスタイルのタイトルになり、iPhoneライクなボタン配置を容易に行うことが出来るようになっている。 ここでは、ActionBarではなく、GingerBread(2.3)以前のバージョンでも利用できるタイトルバーをカスタマイズしてボタンを配置する方法である。 ==== 駐 ==== Android 11が最新版である2021年現在において、ActionBarは既に使われない技術となっている。 Toolbarがこれに代わるものとして使用されており、同じく廃止されている「オプションボタン」に相当する、「…」ボタンを Toolbar上に提供する形になっている。((もちろん、オプションが不要な場合にはボタンを置かないことも可能である。)) ActionBar同様に、他のボタンを配置することも可能である。 ===== タイトルのカスタマイズ ===== そもそも、GingerBread以前であっても、タイトルを任意にカスタマイズしてボタンでも何でも配置できるようになっている。 任意のレイアウトを作成して、それを割り当てればタイトルバーは変更可能である。 具体的にはアクティビティの onCreate()で、次のようにすればいい。 <code> private Window mWindow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mWindow = getWindow(); mWindow.requestFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.post_comment); mWindow.setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_with_button); </code> レイアウト、title_with_button.xmlはこんな感じで。 <code> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/titleLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:baselineAligned="false" android:gravity="center_vertical" android:orientation="horizontal" > <TextView android:id="@+id/txtTitle" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:ellipsize="end" android:gravity="center_vertical" android:maxLines="1" android:minHeight="40sp" android:text="TextView" /> <Button android:id="@+id/btnPost" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0" android:gravity="fill_vertical" android:text="@string/btn_label_post" /> </LinearLayout> </code> **requestFeature()**はsetContentView()の前に行う必要がある。 これはタイトルのカスタマイズ内容の如何に関わらず必ずである。 しかし、ただこれを行っただけでは実は問題がある。 ボタンなど、最低の高さが単純なテキストより高いアイテムを配置すると、タイトルバーに収まりきらないからだ。 高さのカスタマイズは、アクティビティのテーマで行う必要がある。 タイトルに、任意のウィジェットを配置する、ここまでの方法は、実はあちこちにサンプルとして書かれているが、この高さを変更する下りまで書いてあるところはほとんど存在しない。 おそらくは、Androidのアプリ開発に置いては、当たり前のことなのだろう。 さんざん探し回った結果、[[http://staticallytyped.wordpress.com/2011/03/18/android-dynamic-and-custom-title-bars/|ここ]]に、このことに関する記述があるのをようやく見つけた。 ===== 高さの変更 ===== 高さの設定は、スタイルによって行う。styles.xmlに次のようなエントリを作る。 <code> <?xml version="1.0" encoding="utf-8"?> <resources> <style name="customized_title"> <item name="android:windowTitleSize">40sp</item> </style> </resources> </code> これを、そのタイトルを使いたいアクティビティのテーマとして設定するだけである。 具体的には、Manifestファイルで、次のように割り当てる。 <code> <activity android:name=".FBPostMessage" android:theme="@style/customized_title"></activity> </code> これで、次のような高さがきちんと収まった画面を得ることが出来る。 [[http://www.wildtree.jp/~araki/wiki/picture/Android-Customized-TitleBar.png|{{http://www.wildtree.jp/~araki/wiki/picture/Android-Customized-TitleBar.png}}]] [[Androidに関して]]へ戻る。
タイトルバーのカスタマイズ.txt
· 最終更新:
2021/04/14 00:07
by
araki
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ