はじめに

5.0Lollipopで今までのActionBarの変わりになるToolbarが追加されました。
カスタム性がこれまでのActionBarより行いやすいので出来る場合は移行をすると良いと思います。
support library7に組み込まれているので2.1以降であれば動作します。

リファレンス
https://developer.android.com/intl/ja/reference/android/support/v7/widget/Toolbar.html

ToolBarを実装

今回は戻るボタンと検索ボタンを追加してみます
※画像は見た目のイメージです。今回の実装とは少し異なります。(色・アイコンなどは適時変えてください)

test

Activityレイアウト実装

activity_mainレイアウトファイルを作成します

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar"/>

</LinearLayout>

今回はActivityへToolbar書きましたが別xmlにしてincludeのほうが良いです

menuレイアウト実装

menu_mainメニューレイアウトを作成します

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        app:showAsAction="never" />

    <item
        android:id="@+id/action_search"
        android:icon="@drawable/search"
        android:title="test"
        app:showAsAction="always" />
</menu>

Activity実装

上記で作成したレイアウトをバインドしクリックイベントを実装します

public class MainActivity extends Activity {

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

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

        toolbar.setTitle("hoge");

        toolbar.setNavigationIcon(R.drawable.back);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivityy.this,"back click!!",Toast.LENGTH_LONG).show();
            }
        });

        toolbar.inflateMenu(R.menu.menu_main);
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                int id = item.getItemId();

                if (id == R.id.action_search) {
                    Toast.makeText(MainActivity.this,"search click!!",Toast.LENGTH_LONG).show();
                    return true;
                }

                return true;
            }
        });
    }
}

ここまでで実装完了です。
あとはアプリ仕様にあわせてナビゲーションなど実装してください

その他おすすめの備忘録

Tagged with:
 

コメントを残す