Androidエッセイのタイトルバーの削除とカスタマイズ

7713 ワード

前言
アンドロイドではシステムのデフォルトのタイトルバーが好きではありませんが、自分のタイトルバーをカスタマイズするにはどうすればいいのでしょうか.
本文
Androidでactivityのタイトルバーを外すには2つの方法があります.
  • 一つはActivityコードで
  • を実現することです
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //     
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main);
        }

    覚えておいてください.このコードはsetContentView()の前に書きます.
  • はAndroidManifestですxmlファイルで
  • を実現
    "true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            //             
            android:theme="@android:style/Theme.NoTitleBar">

    もちろん、アプリケーション全体をタイトルバーなしに設定します.1つのActivityをタイトルバーなしに設定するだけなら、あるActivityにコードを書き込めばいいのです.次のようになります.
    <activity
                android:name=".MainActivity"
                android:theme="@android:style/Theme.NoTitleBar">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                intent-filter>
            activity>

    次に、タイトルバーをカスタマイズする方法について説明します.
  • まず、カスタムタイトルバーレイアウトxmlファイル
  • を定義する必要があります.
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:background="#f2f8f8">
        //layout_height         
    
        <TextView
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="      "
            android:textSize="20sp"
            android:gravity="center_vertical"
            />
    
    RelativeLayout>
  • その後、Activityでカスタムタイトルバー
  • を使用することを宣言する
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //           
            requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
            setContentView(R.layout.activity_main);
            // title.xml          
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
        }
  • もちろん、カスタムタイトルバーの両側にスクリーンが完全に覆われていないことによる見栄えの悪い
  • が発生する場合があります.
    この場合、styleファイルをもう1つ定義する必要があります.xml
    
    <resources xmlns:android="http://schemas.android.com/apk/res/android">
    
        <style name="titleBarStyle" parent="android:Theme">
            <item name="android:windowTitleSize">50dpitem>--                -->
            <item name="android:padding">0dpitem>--                        -->
        style>
    resources>

    そして、AndroidManifest.xmlでactivityにthemeプロパティを追加
    <activity
                android:name=".MainActivity"
                android:theme="@style/titleBarStyle">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                intent-filter>
            activity>

    ここでは基本的にカスタムタイトルバーが実現されます.
    以上が筆者のAndroidタイトル欄へのエッセイです.