Material Design Search Bar for Android
Java
Latest commit 1bb8a2f Dec 27, 2016 @mancj committed on GitHub Update README.md

README.md

Material SearchBar Android

Material Design Search Bar for Android

Android Arsenal

This beautiful and easy to use library will help to add Lollipop Material Design SearchView in your project.

Material Design SearchBar Android Material Design SearchBar Android

Material Design SearchBar Android

How to use

to include SearchBar to your project:

add this code to the the project level build.gradle file

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

add the dependency to the the app level build.gradle file

dependencies {
    compile 'com.github.mancj:MaterialSearchBar:0.3.5'
}

then add SearchBar to your activity:

<com.mancj.materialsearchbar.MaterialSearchBar
    app:speechMode="true"
    app:hint="Custom hint"
    app:maxSuggestionsCount="10"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/searchBar" />

MaterialSarchBar has the following xml attributes:

attribute description
hint Set custom prompt in the search box
speechMode If set to true, microphone icon will display instead of the search icon.
maxSuggestionsCount Specifies the maximum number of search queries stored until the activity is destroyed
searchIconDrawable Set search icon drawable resource
navIconDrawable Set navigation icon drawable resource
textColor Change text color
hintColor Change text hint color
navIconEnabled Set navigation icon enabled
placeholder Set the place holder text before any click is performed to

public methods:

  • disableSearch()
  • enableSearch()
  • isSearchEnabled()
  • setText(String text)
  • getText()
  • setHint(CharSequence hint)
  • setNavButtonEnabled(boolean navButtonEnabled)
  • setSpeechMode(boolean speechMode)
  • setOnSearchActionListener(OnSearchActionListener onSearchActionListener)
  • setLastSuggestions(List<String> suggestions)
  • getLastSuggestions()
  • setMaxSuggestionCount(int maxQuery)
  • setSearchIcon(int searchIconResId)
  • setNavigationIcon(int navigationIconResId)
  • setTextColor(int textColor)
  • setTextHintColor(int hintColor)
  • inflateMenu(int menuResource)
  • getMenu()
  • addTextChangeListener(TextWatcher textWatcher)
  • setCardViewElevation(int elevation)
  • setPlaceHolder(CharSequence placeholder)

To save search queries when the activity is destroyed, use the method searchBar.getLastSuggestions() and then, to restore them use searchBar.setLastSuggestions(List<String>); as shown in the example below

Example

Here is a simple example of using 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();
    }
}