Панель поиска Material Design для Android
Эта красивая и простая в использовании библиотека поможет добавить Lollipop Material Design SearchView в ваш проект.
чтобы включить SearchBar в свой проект:
добавьте этот код в файл build.gradle уровня проекта
allprojects {
repositories {
.. .
maven { url " https://jitpack.io " }
}
}
добавьте зависимость в файл build.gradle уровня приложения
dependencies {
implementation ' com.github.mancj:MaterialSearchBar:X.X.X '
}
затем добавьте SearchBar в свою деятельность:
< com .mancj.materialsearchbar.MaterialSearchBar
style = " @style/MaterialSearchBarLight "
app : mt_speechMode = " true "
app : mt_hint = " Custom hint "
app : mt_maxSuggestionsCount = " 10 "
android : layout_width = " match_parent "
android : layout_height = " wrap_content "
android : id = " @+id/searchBar " />
MaterialSearchBar имеет следующие атрибуты xml:
Атрибут | Описание |
---|---|
mt_speechMode | если установлено значение true, вместо значка поиска будет отображаться значок микрофона. |
mt_maxSuggestionsCount | указывает максимальное количество сохраненных поисковых запросов |
mt_navIconEnabled | включить значок навигации |
mt_roundedSearchBarEnabled | используйте панель поиска в форме капсулы в версии 21+ и вернитесь к настройкам по умолчанию в нижней части |
mt_dividerColor | установить цвета разделителей предложений и меню |
mt_searchBarColor | установить основной цвет панели поиска |
mt_menuIconDrawable | установить возможность рисования значка меню |
mt_searchIconDrawable | установить возможность рисования значка поиска, когда речевой режим имеет значение false |
mt_speechIconDrawable | установить возможность рисования значка речи, когда режим речи включен |
mt_backIconDrawable | установить возможность рисования значка стрелки назад |
mt_clearIconDrawable | установить возможность рисования ясного значка |
mt_navIconTint | установить цвет оттенка анимированного значка навигации/назад |
mt_menuIconTint | установить цвет оттенка значка меню |
mt_searchIconTint | установить оттенок цвета значок поиска/речи |
mt_backIconTint | установить цвет оттенка значка стрелки назад |
mt_clearIconTint | установить цвет оттенка прозрачного значка |
mt_navIconUseTint | должен ли анимированный значок навигации использовать цвет оттенка |
mt_menuIconUseTint | должен ли значок меню использовать цвет оттенка |
mt_searchIconUseTint | должен ли значок поиска/речь использовать цвет оттенка |
mt_backIconUseTint | должен ли значок сзади использовать цвет оттенка |
mt_clearIconUseTint | должен ли прозрачный значок использовать цвет оттенка |
mt_hint | установить текст подсказки, когда панель поиска находится в фокусе и поисковый запрос пуст |
mt_placeholder | установите текст заполнителя, когда MaterialSearchBar не сфокусирован |
mt_textColor | установить цвет текста |
mt_hintColor | установить цвет подсказки |
mt_placeholderColor | установить цвет заполнителя |
mt_textCursorTint | установить оттенок текстовых курсоров |
mt_highlightedTextColor | установить цвет оттенка выделения текста |
общедоступные методы:
addTextChangeListener(TextWatcher textWatcher)
clearSuggestions()
closeSearch()
openSearch()
getLastSuggestions()
getMenu()
getText()
hideSuggestionList()
inflateMenu(int menuResource)
inflateMenu(int menuResource, int icon)
isSearchOpened()
isSpeechModeEnabled()
isSuggestionsVisible()
setArrowIcon(int arrowIconResId)
setArrowIconTint(int arrowIconTint)
setCardViewElevation(int elevation)
setClearIcon(int clearIconResId)
setClearIconTint(int clearIconTint)
setCustomSuggestionAdapter(SuggestionsAdapter suggestionAdapter)
setDividerColor(int dividerColor)
setHint(CharSequence hintText)
setIconRippleStyle(boolean borderlessRippleEnabled)
setLastSuggestions(List suggestions)
setMaxSuggestionCount(int maxSuggestionsCount)
setMenuDividerEnabled(boolean menuDividerEnabled)
setMenuIcon(int menuIconResId)
setMenuIconTint(int menuIconTint)
setNavButtonEnabled(boolean navButtonEnabled)
setNavIconTint(int navIconTint)
setOnSearchActionListener(OnSearchActionListener onSearchActionListener)
setPlaceHolder(CharSequence placeholder)
setPlaceHolderColor(int placeholderColor)
setRoundedSearchBarEnabled(boolean roundedSearchBarEnabled)
setSearchIcon(int searchIconResId)
setSearchIconTint(int searchIconTint)
setSpeechModeEnabled(boolean speechMode)
setSuggestionsClickListener(SuggestionsAdapter.OnItemViewClickListener listener)
setText(String text)
setTextColor(int textColor)
setTextHighlightColor(int highlightedTextColor)
setTextHintColor(int hintColor)
showSuggestions()
updateLastSuggestions(List suggestions)
Стилизация материала SearchBar
Пользовательский стиль —styles.xml Создайте собственный стиль и используйте один из предоставленных стилей в качестве родительского.
Provided Styles are: MaterialSearchBarLight and MaterialSearchBarDark
Example:
< style name = " MyCustomTheme " parent = " MaterialSearchBarLight " >
< item name = " mt_searchBarColor " >@color/searchBarPrimaryColor</ item >
< item name = " mt_dividerColor " >@color/searchBarDividerColor</ item >
< item name = " mt_navIconTint " >@color/searchBarNavIconTintColor</ item >
< item name = " mt_searchIconTint " >@color/searchBarSearchIconTintColor</ item >
< item name = " mt_clearIconTint " >@color/searchBarClearIconTintColor</ item >
< item name = " mt_menuIconTint " >@color/searchBarMenuIconTintColor</ item >
< item name = " mt_backIconTint " >@color/searchBarBackIconTintColor</ item >
< item name = " mt_textCursorTint " >@color/searchBarCursorColor</ item >
< item name = " mt_textColor " >@color/searchBarTextColor</ item >
< item name = " mt_hintColor " >@color/searchBarHintColor</ item >
< item name = " mt_placeholderColor " >@color/searchBarPlaceholderColor</ item >
< item name = " mt_highlightedTextColor " >@color/searchBarTextHighlightColor</ item >
</ style >
ИЛИ
Пользовательские цвета — Colors.xml Просто установите/измените эти цвета (или некоторые другие), и вы получите свой собственный стиль.
//Material SearchBar Light Theme Colors
< color name = " searchBarIconColor " >#3a3a3a</ color >
//Base
< color name = " searchBarPrimaryColor " >#FFFFFF</ color >
< color name = " searchBarCursorColor " >#8000a1ff</ color >
< color name = " searchBarDividerColor " >#1F000000</ color >
//Icons
< color name = " searchBarNavIconTintColor " >@color/searchBarIconColor</ color >
< color name = " searchBarMenuIconTintColor " >@color/searchBarIconColor</ color >
< color name = " searchBarSearchIconTintColor " >@color/searchBarIconColor</ color >
< color name = " searchBarClearIconTintColor " >@color/searchBarIconColor</ color >
< color name = " searchBarBackIconTintColor " >@color/searchBarIconColor</ color >
//Text
< color name = " searchBarTextColor " >#DE000000</ color >
< color name = " searchBarHintColor " >#42000000</ color >
< color name = " searchBarPlaceholderColor " >#8A000000</ color >
< color name = " searchBarTextHighlightColor " >#8000a1ff</ color >
//Base
< color name = " searchBarPrimaryColorDark " >#303030</ color >
< color name = " searchBarDividerColorDark " >#1FFFFFFF</ color >
//Material SearchBar Dark Theme Colors
< color name = " searchBarIconColorDark " >#00a1ff</ color >
//Icons
< color name = " searchBarNavIconTintColorDark " >@color/searchBarIconColorDark</ color >
< color name = " searchBarMenuIconTintColorDark " >@color/searchBarIconColorDark</ color >
< color name = " searchBarSearchIconTintColorDark " >@color/searchBarIconColorDark</ color >
< color name = " searchBarClearIconTintColorDark " >@color/searchBarIconColorDark</ color >
< color name = " searchBarBackIconTintColorDark " >@color/searchBarIconColorDark</ color >
//Text
< color name = " searchBarTextColorDark " >#DEFFFFFF</ color >
< color name = " searchBarHintColorDark " >#42FFFFFF</ color >
< color name = " searchBarPlaceholderColorDark " >#8AFFFFFF</ color >
< color name = " searchBarTextHighlightColorDark " >#BF00a1ff</ color >
Чтобы сохранить поисковые запросы при уничтожении активности, используйте метод searchBar.getLastSuggestions()
, а затем для их восстановления используйте searchBar.setLastSuggestions(List<String>);
как показано в примере ниже
Вот простой пример использования MaterialSearchBar.
private List < String > lastSearches ;
private MaterialSearchBar searchBar ;
@ Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . activity_main );
searchBar = ( MaterialSearchBar ) findViewById ( R . id . searchBar );
searchBar . setHint ( "Custom hint" );
searchBar . setSpeechMode ( true );
//enable searchbar callbacks
searchBar . setOnSearchActionListener ( this );
//restore last queries from disk
lastSearches = loadSearchSuggestionFromDisk ();
searchBar . setLastSuggestions ( list );
//Inflate menu and setup OnMenuItemClickListener
searchBar . inflateMenu ( R . menu . main );
searchBar . getMenu (). setOnMenuItemClickListener ( this );
}
@ Override
protected void onDestroy () {
super . onDestroy ();
//save last queries to disk
saveSearchSuggestionToDisk ( searchBar . getLastSuggestions ());
}
@ Override
public void onSearchStateChanged ( boolean enabled ) {
String s = enabled ? "enabled" : "disabled" ;
Toast . makeText ( MainActivity . this , "Search " + s , Toast . LENGTH_SHORT ). show ();
}
@ Override
public void onSearchConfirmed ( CharSequence text ) {
startSearch ( text . toString (), true , null , true );
}
@ Override
public void onButtonClicked ( int buttonCode ) {
switch ( buttonCode ){
case MaterialSearchBar . BUTTON_NAVIGATION :
drawer . openDrawer ( Gravity . LEFT );
break ;
case MaterialSearchBar . BUTTON_SPEECH :
openVoiceRecognizer ();
}
}
Больше примеров