Tool Bar (Action Bar) に icon, logo, up indicator などを表示する

`"Basic Activity"`を使って新規にプロジェクトを作成した後、`"Tool Bar"`上にiconやup indicator などを表示する方法のメモです。

## 環境

"Windows 10 Pro (64bit)" 上の "Android Studio 2.2"で確認しています。

- Android Studio

> Android Studio 2.2.1
> Build #AI-145,3330264, built on October 6, 2016
> 
> JRE: 1.8.0_76-release-b03 amd64
> JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

- Create New Project の設定値

> Target Android Devices
> 　Phone and Tablet
> 　　Minimum SDK | API 15: Android 4.0.3 (IceCreamSandwich)
>
> Add an Activity to Mobile
> 　Basic Activity

## Basic Activity のデフォルトの Tool Bar (Action Bar) の表示

![Screenshot_1476801255.png](https://qiita-image-store.s3.amazonaws.com/0/93531/69a951cb-8adf-2290-3313-24d04bc14de9.png)

```java:MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        // 以下省略
    }
```

* Tool Bar が Action Bar として振る舞う設定が有効になっている。

## Tool Bar をそのまま使用する

### Tool Bar に何も設定しなかった場合

![Screenshot_1476804181.png](https://qiita-image-store.s3.amazonaws.com/0/93531/81e9dc99-2fa9-4afc-038a-dd2f24928c7e.png)

```java:MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        
        // 以下省略
    }
```

### Tool Bar にロゴとタイトルを設定した場合

![Screenshot_1476804542.png](https://qiita-image-store.s3.amazonaws.com/0/93531/d9e93b80-faaa-b0cf-e326-3d2adfc64870.png)

```java:MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        toolbar.setTitle("Title");
        toolbar.setLogo(android.R.drawable.sym_def_app_icon);
        
        // 以下省略
    }
```

### Tool Bar にナビゲーションアイコンを設定した場合

![Screenshot_1476805157.png](https://qiita-image-store.s3.amazonaws.com/0/93531/2c1b5b51-07cf-ddbb-8372-2e1c2c9fe719.png)

```java:MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        toolbar.setTitle("Title");
        toolbar.setNavigationIcon(android.R.drawable.sym_def_app_icon);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        
        // 以下省略
    }
```


## Tool Bar を Action Bar として使用する

### Tool Bar (Action Bar) の Up Indicator 表示を有効にした場合

![Screenshot_1476801367.png](https://qiita-image-store.s3.amazonaws.com/0/93531/9d59a497-da1a-2bd5-75ab-0a6508af1fbf.png)

```java:MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        
        // up indicator の表示を有効にする
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        
        // 以下省略
    }
```

### Tool Bar (Action Bar) に アイコン を設定した場合

![Screenshot_1476802014.png](https://qiita-image-store.s3.amazonaws.com/0/93531/39f27e48-aa1b-3005-0671-afa4f944be57.png)

```java:MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        
        // アイコンを表示する
        getSupportActionBar().setIcon(android.R.drawable.sym_def_app_icon);
        
        // 以下省略
    }
```

* アイコンのサイズが大きさと、アイコンとタイトルとの間隔がいまいちでした。

### Tool Bar (Action Bar) に ロゴ を設定した場合

![Screenshot_1476802167.png](https://qiita-image-store.s3.amazonaws.com/0/93531/3f90eff4-3ea8-2f2a-4c52-056988c36fac.png)

```java:MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        
        // ロゴを表示する
        getSupportActionBar().setLogo(android.R.drawable.sym_def_app_icon);
        
        // 以下省略
    }
```

* アイコンの表示と同様でした。

### Tool Bar (Action Bar) に Up Indicator として画像を設定した場合

![Screenshot_1476806099.png](https://qiita-image-store.s3.amazonaws.com/0/93531/413b5f7c-ff39-61bf-1a00-b95caaa08586.png)

```java:MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        
        // Up Indicator として画像を表示する
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(android.R.drawable.sym_def_app_icon);
        
        // 以下省略
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == android.R.id.home) {
            Toast.makeText(MainActivity.this, "Replace with your own action", Toast.LENGTH_LONG).show();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
```