アクションバーのカスタマイズ

アクションバーには必ず左側にアイコンとタイトルが表示されます。

このタイトルを非表示にしてアクションバーの左にウィジェットを表示したい場合の方法について紹介します。

*注意* : ここではアクションバーを表示するのにActionBarActivityを使っています。

レイアウト

まずアクションバーに設置するレイアウトを作成します。

ここでは仮にmy_action_bar_views.xmlというレイアウトファイルを作ることにします。

<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:hint="Enter text ..."/>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Search"/>

</LinearLayout>

ここでは検索バーと検索ボタンを持つようなレイアウトを作ってみました。

アクションバーへの設置

次に作成したレイアウトをアクションバーに設置します。

public class MyActivity extends ActionBarActivity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        setActionBar();
    }
    
    /**アクションバーのカスタム*/
    private void setActionBar()
    {
        /**アプリアイコンとタイトルを非表示*/
        getSupportActionBar().setDisplayShowCustomEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setIcon(null);
        getSupportActionBar().setDisplayShowHomeEnabled(false);
        getSupportActionBar().setDisplayUseLogoEnabled(false);
        
        /**作成したレイアウトをアクションバーに設置*/
        LayoutInflater inflator = (LayoutInflater) getSystemService(
                Context.LAYOUT_INFLATER_SERVICE);
        View actionBarLayout = inflator.inflate(
                R.layout.my_action_bar_views, null);
        ActionBar.LayoutParams params = new ActionBar.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
        getSupportActionBar().setCustomView(actionBarLayout, params);
    }
}

setDisplayShowTitleEnabledメソッドでタイトルを非表示、setIconにnullを渡すことでアイコンを非表示にしています。

レイアウトをアクションバーに設置するにはsetCustomViewメソッドを使えばOKです。

このとき、setCustomViewでカスタムされるのはタイトルバーのみなのでそれ以外のメニューなどには影響はありません。

カスタムしたアクションバーは次の画像のようになります。

カスタマイズしたアクションバー

以上がアクションバーにカスタムビューを設定する方法です。お疲れ様でした。

関連項目
プライバシーポリシー