Toolbarに検索バーを表示させたいなぁと思い、いろいろ調べたときの備忘録
ActionViewを使うサンプルはよくあるけど、タイトルの代わりに表示する例って少ない。。。
虫眼鏡アイコンを表示して、必要に応じて検索バーを表示する
よくあるサンプル。
検索ボタンをメニューに配置して、ボタンを押すと検索バーが開くやつ。
ActionViewを使って、Toolbarを変更する形
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
などで調整
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>
便利なライブラリもあるっぽい
- MaterialSearchBar/README.md at master · mancj/MaterialSearchBar
- sahildave/Search-View-Layout: Material Design Search View Layout, now implemented in Google Maps, Dialer, etc
【宣伝】記念日カウントアップアプリをリリースしました!!
登録した記念日の経過した時間や日数をカウントアップするアプリです。
カップルや夫婦、友達の赤ちゃんの記念日や誕生日など、大切な日の記録に。
以上!!
参考にしたサイト様
- Search Overview | Android Developers
- アプリバーの追加 | Android Developers
- Adding Search Functionality | Android Developers
- Toolbar に 13行で SearchView を実装する
- 【android】ActionBarでのSearchViewの基本的な使い方 - とりあえずphpとか
- [androidアプリ]タイトルバーをカスタマイズしたら余白(padding)が消えない・残ってしまう対策 | やんだーのスマホアプリ開発メモ ~Objective-C+PHPでiPhoneアプリとJava+PHPでAndroidアプリ~
- Androidで個人的によく使うlayout系設定チートシート
- [Android] Toolbar:ツールバーのメニューを表示する | Programming Style
- SearchViewのカスタマイズ - 前人未踏の領域へ
- android - Support ActionMenuView change popupTheme - Stack Overflow