ToolbarからSearchView ActionViewを取る方法

2015-10-03T21:45:08+09:00 Java Android

Toolbarを使っている場合であれば、onCreateOptionsなんちゃらでメニューを作る以外でもSearchView等のActionViewを取得できるっぽい

一部のみ抜粋

@Bind(R.id.toolbar)
Toolbar toolbar

@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    toolbar.inflateMenu(R.menu.menu_toolbar);
    MenuItem searchMenuItem = toolbar.getMenu().findItem(R.id.toolbar_menu_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
}

Toolbarのインスタンスを取得してinflateMenuでメニューリソースを参照。ちなみにそのリソースは以下

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/toolbar_menu_search"
        android:icon="@drawable/ic_search_white"
        android:title="@string/toolbar_menu_search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always" />

</menu>

あとはgetMenu().findItemで取ってActionViewインスタンスを取る事が出来る模様

gradleでartifactoryリポジトリを使う npm runで複数のscriptsを動かす