ToolBar(ActionBar)を自前で作りたいときに遭遇するエラーへの対処

Android の開発がいよいよ始まっているものの、序盤のつまづきが多い。完全に初歩っぽいけどメモ。

ActionBarではなく ToolBar

ここからかよ!ってなるんですが、アプリ上部のヘッダー部分。旧来ActionBarと呼ばれていたみたいですが、ヘッダー周りの考え方の整理に伴い、Toolbarと呼ばれるより柔軟なパーツができていた模様。

過去のブログ記事などを見ていると、ActionBarが頻出するけど、今後はToolBarを使ったナビゲーションに添わせて行くのがモダンっぽい。

ref. AndroidのToolBar(新しいActionBar)メモ

自前で Toolbar をセットしてみる。

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="@?attr/colorPrimary"" />

xml にこんな記述をしてみたあとに、Activity側で

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

こんなことをしてみるんですよ。

すると、

This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.

ってメッセージがお出ましに。。。

デフォルトで ActionBar セットされてるから、できない。

どこで、そんな。。

セットした覚えない。。

styles.xmlを見よう

アプリケーションの スタイルres/values/styles.xml にまとまっているらしい。

今回は、Toolbarを自前で頑張りたいので

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>

みたいにしてあげると、アプリ全体でActionBarを付けない設定になるらしい。

これが言いたかっただけなんだけど、Androidのお作法なかなか難しい。

Related Posts