くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Android x Toolbar x SearchView|常に検索バーを表示していたい

Toolbarに検索バーを表示させたいなぁと思い、いろいろ調べたときの備忘録
ActionViewを使うサンプルはよくあるけど、タイトルの代わりに表示する例って少ない。。。

虫眼鏡アイコンを表示して、必要に応じて検索バーを表示する

よくあるサンプル。
検索ボタンをメニューに配置して、ボタンを押すと検索バーが開くやつ。
ActionViewを使って、Toolbarを変更する形

f:id:wannabe-jellyfish:20180904163049p:plain:w500

Layout XML

Toolbarはシンプルな形。

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:popupTheme="@style/AppTheme.PopupOverlay"/>
Menu XML

memuの方にSearchViewを追加すると表示できる

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
      <item
        android:id="@+id/menu_search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="Search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="collapseActionView|ifRoom"/>
    <item
        android:id="@+id/menu_info"
        android:icon="@android:drawable/ic_dialog_info"
        android:title="Info"
        app:showAsAction="always"/>
</menu>

常に検索バーを表示する

やりたかったやつ。
常にタイトルの代わりに検索バーを表示する場合は、ToolBarの中にSearchViewを配置。
SearchViewの左側の余白は、ToolbarのcontentInsetStartなどで調整

f:id:wannabe-jellyfish:20180904163321p:plain:w500

Layout XML
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:contentInsetStart="2dp"
    app:contentInsetStartWithNavigation="2dp"
    app:popupTheme="@style/AppTheme.PopupOverlay">

    <android.support.v7.widget.SearchView
        android:id="@+id/searchView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</android.support.v7.widget.Toolbar>
Menu XML

もちろん、SearchViewの横に従来のメニューも追加できる

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_info"
        android:icon="@android:drawable/ic_dialog_info"
        android:title="Info"
        app:showAsAction="always"/>
</menu>

便利なライブラリもあるっぽい

【宣伝】記念日カウントアップアプリをリリースしました!!

f:id:wannabe-jellyfish:20180904163438p:plain:w500

Android: Google Play

登録した記念日の経過した時間や日数をカウントアップするアプリです。
カップルや夫婦、友達の赤ちゃんの記念日や誕生日など、大切な日の記録に。

以上!!

参考にしたサイト様