SearchView
public class SearchView extends LinearLayoutCompat implements CollapsibleActionView
| java.lang.Object | ||||
| ↳ | android.view.View | |||
| ↳ | android.view.ViewGroup | |||
| ↳ | androidx.appcompat.widget.LinearLayoutCompat | |||
| ↳ | androidx.appcompat.widget.SearchView |
A widget that provides a user interface for the user to enter a search query and submit a request to a search provider. Shows a list of query suggestions or results, if available, and allows the user to pick a suggestion or result to launch into.
When the SearchView is used in an ActionBar as an action view, it's collapsed by default, so you must provide an icon for the action.
If you want the search field to always be visible, then call setIconifiedByDefault(false).
| See also | |
|---|---|
SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW |
Summary
Nested types |
|---|
public interface SearchView.OnCloseListener |
public interface SearchView.OnQueryTextListenerCallbacks for changes to the query text. |
public interface SearchView.OnSuggestionListenerCallback interface for selection events on suggestions. |
Public constructors |
|---|
SearchView(@NonNull Context context) |
SearchView(@NonNull Context context, @Nullable AttributeSet attrs) |
SearchView( |
Public methods |
|
|---|---|
void |
|
int |
@Attribute(value = "android:imeOptions")Returns the IME options set on the query text field. |
int |
Returns the input type set on the query text field. |
int |
@Attribute(value = "android:maxWidth")Gets the specified maximum width in pixels, if set. |
CharSequence |
getQuery()Returns the query string currently in the text field. |
@Nullable CharSequence |
@Attribute(value = "androidx.appcompat:queryHint")Returns the hint text that will be displayed in the query text field. |
CursorAdapter |
Returns the adapter used for suggestions, if any. |
boolean |
@Attribute(value = "androidx.appcompat:iconifiedByDefault")Returns the default iconified state of the search field. |
boolean |
Returns the current iconified state of the SearchView. |
boolean |
Returns whether query refinement is enabled for all items or only specific ones. |
boolean |
Returns whether the submit button is enabled when necessary or never displayed. |
void |
Called when this view is collapsed as an action view. |
void |
Called when this view is expanded as an action view. |
void |
onWindowFocusChanged(boolean hasWindowFocus) |
boolean |
requestFocus(int direction, Rect previouslyFocusedRect) |
void |
setIconified(boolean iconify)Iconifies or expands the SearchView. |
void |
setIconifiedByDefault(boolean iconified)Sets the default or resting state of the search field. |
void |
setImeOptions(int imeOptions)Sets the IME options on the query text field. |
void |
setInputType(int inputType)Sets the input type on the query text field. |
void |
setMaxWidth(int maxpixels)Makes the view at most this many pixels wide |
void |
setOnCloseListener(SearchView.OnCloseListener listener)Sets a listener to inform when the user closes the SearchView. |
void |
Sets a listener to inform when the focus of the query text field changes. |
void |
Sets a listener for user actions within the SearchView. |
void |
setOnSearchClickListener(View.OnClickListener listener)Sets a listener to inform when the search button is pressed. |
void |
Sets a listener to inform when a suggestion is focused or clicked. |
void |
setQuery(CharSequence query, boolean submit)Sets a query string in the text field and optionally submits the query as well. |
void |
setQueryHint(@Nullable CharSequence hint)Sets the hint text to display in the query text field. |
void |
setQueryRefinementEnabled(boolean enable)Specifies if a query refinement button should be displayed alongside each suggestion or if it should depend on the flags set in the individual items retrieved from the suggestions provider. |
void |
setSearchableInfo(SearchableInfo searchable)Sets the SearchableInfo for this SearchView. |
void |
setSubmitButtonEnabled(boolean enabled)Enables showing a submit button when the query is non-empty. |
void |
setSuggestionsAdapter(CursorAdapter adapter)You can set a custom adapter if you wish. |
Protected methods |
|
|---|---|
void |
|
void |
onLayout(boolean changed, int left, int top, int right, int bottom) |
void |
onMeasure(int widthMeasureSpec, int heightMeasureSpec) |
void |
onQueryRefine(@Nullable CharSequence queryText)Called when a query refinement has been proposed, e.g. when the user clicks on a suggestion provided by a |
void |
onRestoreInstanceState(Parcelable state) |
Parcelable |
Inherited Constants |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Inherited methods |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Public constructors
SearchView
public SearchView(
@NonNull Context context,
@Nullable AttributeSet attrs,
int defStyleAttr
)
Public methods
getImeOptions
@Attribute(value = "android:imeOptions")
public int getImeOptions()
Returns the IME options set on the query text field.
| Returns | |
|---|---|
int |
the ime options |
| See also | |
|---|---|
setImeOptions |
getInputType
public int getInputType()
Returns the input type set on the query text field.
| Returns | |
|---|---|
int |
the input type |
getMaxWidth
@Attribute(value = "android:maxWidth")
public int getMaxWidth()
Gets the specified maximum width in pixels, if set. Returns zero if no maximum width was specified.
| Returns | |
|---|---|
int |
the maximum width of the view |
getQuery
public CharSequence getQuery()
Returns the query string currently in the text field.
| Returns | |
|---|---|
CharSequence |
the query string |
getQueryHint
@Attribute(value = "androidx.appcompat:queryHint")
public @Nullable CharSequence getQueryHint()
Returns the hint text that will be displayed in the query text field.
The displayed query hint is chosen in the following order:
- Non-null value set with
setQueryHint - Value specified in XML using
app:queryHint - Valid string resource ID exposed by the
SearchableInfoviagetHintId - Default hint provided by the theme against which the view was inflated
| Returns | |
|---|---|
@Nullable CharSequence |
the displayed query hint text, or |
getSuggestionsAdapter
public CursorAdapter getSuggestionsAdapter()
Returns the adapter used for suggestions, if any.
| Returns | |
|---|---|
CursorAdapter |
the suggestions adapter |
isIconfiedByDefault
@Attribute(value = "androidx.appcompat:iconifiedByDefault")
public boolean isIconfiedByDefault()
Returns the default iconified state of the search field.
| Returns | |
|---|---|
boolean |
isIconified
public boolean isIconified()
Returns the current iconified state of the SearchView.
| Returns | |
|---|---|
boolean |
true if the SearchView is currently iconified, false if the search field is fully visible. |
isQueryRefinementEnabled
public boolean isQueryRefinementEnabled()
Returns whether query refinement is enabled for all items or only specific ones.
| Returns | |
|---|---|
boolean |
true if enabled for all items, false otherwise. |
isSubmitButtonEnabled
public boolean isSubmitButtonEnabled()
Returns whether the submit button is enabled when necessary or never displayed.
| Returns | |
|---|---|
boolean |
whether the submit button is enabled automatically when necessary |
onActionViewCollapsed
public void onActionViewCollapsed()
Called when this view is collapsed as an action view. See android.view.MenuItem#collapseActionView().
onActionViewExpanded
public void onActionViewExpanded()
Called when this view is expanded as an action view. See android.view.MenuItem#expandActionView().
setIconified
public void setIconified(boolean iconify)
Iconifies or expands the SearchView. Any query text is cleared when iconified. This is a temporary state and does not override the default iconified state set by setIconifiedByDefault. If the default state is iconified, then a false here will only be valid until the user closes the field. And if the default state is expanded, then a true here will only clear the text field and not close it.
| Parameters | |
|---|---|
boolean iconify |
a true value will collapse the SearchView to an icon, while a false will expand it. |
setIconifiedByDefault
public void setIconifiedByDefault(boolean iconified)
Sets the default or resting state of the search field. If true, a single search icon is shown by default and expands to show the text field and other buttons when pressed. Also, if the default state is iconified, then it collapses to that state when the close button is pressed. Changes to this property will take effect immediately.
The default value is true.
| Parameters | |
|---|---|
boolean iconified |
whether the search field should be iconified by default |
setImeOptions
public void setImeOptions(int imeOptions)
Sets the IME options on the query text field.
| Parameters | |
|---|---|
int imeOptions |
the options to set on the query text field |
| See also | |
|---|---|
setImeOptions |
setInputType
public void setInputType(int inputType)
Sets the input type on the query text field.
| Parameters | |
|---|---|
int inputType |
the input type to set on the query text field |
| See also | |
|---|---|
setInputType |
setMaxWidth
public void setMaxWidth(int maxpixels)
Makes the view at most this many pixels wide maxWidth
setOnCloseListener
public void setOnCloseListener(SearchView.OnCloseListener listener)
Sets a listener to inform when the user closes the SearchView.
| Parameters | |
|---|---|
SearchView.OnCloseListener listener |
the listener to call when the user closes the SearchView. |
setOnQueryTextFocusChangeListener
public void setOnQueryTextFocusChangeListener(View.OnFocusChangeListener listener)
Sets a listener to inform when the focus of the query text field changes.
| Parameters | |
|---|---|
View.OnFocusChangeListener listener |
the listener to inform of focus changes. |
setOnQueryTextListener
public void setOnQueryTextListener(SearchView.OnQueryTextListener listener)
Sets a listener for user actions within the SearchView.
| Parameters | |
|---|---|
SearchView.OnQueryTextListener listener |
the listener object that receives callbacks when the user performs actions in the SearchView such as clicking on buttons or typing a query. |
setOnSearchClickListener
public void setOnSearchClickListener(View.OnClickListener listener)
Sets a listener to inform when the search button is pressed. This is only relevant when the text field is not visible by default. Calling setIconified(false) can also cause this listener to be informed.
| Parameters | |
|---|---|
View.OnClickListener listener |
the listener to inform when the search button is clicked or the text field is programmatically de-iconified. |
setOnSuggestionListener
public void setOnSuggestionListener(SearchView.OnSuggestionListener listener)
Sets a listener to inform when a suggestion is focused or clicked.
| Parameters | |
|---|---|
SearchView.OnSuggestionListener listener |
the listener to inform of suggestion selection events. |
setQuery
public void setQuery(CharSequence query, boolean submit)
Sets a query string in the text field and optionally submits the query as well.
| Parameters | |
|---|---|
CharSequence query |
the query string. This replaces any query text already present in the text field. |
boolean submit |
whether to submit the query right now or only update the contents of text field. |
setQueryHint
public void setQueryHint(@Nullable CharSequence hint)
Sets the hint text to display in the query text field. This overrides any hint specified in the SearchableInfo.
This value may be specified as an empty string to prevent any query hint from being displayed.
| Parameters | |
|---|---|
@Nullable CharSequence hint |
the hint text to display or |
setQueryRefinementEnabled
public void setQueryRefinementEnabled(boolean enable)
Specifies if a query refinement button should be displayed alongside each suggestion or if it should depend on the flags set in the individual items retrieved from the suggestions provider. Clicking on the query refinement button will replace the text in the query text field with the text from the suggestion. This flag only takes effect if a SearchableInfo has been specified with setSearchableInfo and not when using a custom adapter.
| Parameters | |
|---|---|
boolean enable |
true if all items should have a query refinement button, false if only those items that have a query refinement flag set should have the button. |
setSearchableInfo
public void setSearchableInfo(SearchableInfo searchable)
Sets the SearchableInfo for this SearchView. Properties in the SearchableInfo are used to display labels, hints, suggestions, create intents for launching search results screens and controlling other affordances such as a voice button.
| Parameters | |
|---|---|
SearchableInfo searchable |
a SearchableInfo can be retrieved from the SearchManager, for a specific activity or a global search provider. |
setSubmitButtonEnabled
public void setSubmitButtonEnabled(boolean enabled)
Enables showing a submit button when the query is non-empty. In cases where the SearchView is being used to filter the contents of the current activity and doesn't launch a separate results activity, then the submit button should be disabled.
| Parameters | |
|---|---|
boolean enabled |
true to show a submit button for submitting queries, false if a submit button is not required. |
setSuggestionsAdapter
public void setSuggestionsAdapter(CursorAdapter adapter)
You can set a custom adapter if you wish. Otherwise the default adapter is used to display the suggestions from the suggestions provider associated with the SearchableInfo.
| See also | |
|---|---|
setSearchableInfo |
Protected methods
onQueryRefine
protected void onQueryRefine(@Nullable CharSequence queryText)
Called when a query refinement has been proposed, e.g. when the user clicks on a suggestion provided by a SuggestionsAdapter.
By default, this method sets the text in the query box without updating the suggestions.
| Parameters | |
|---|---|
@Nullable CharSequence queryText |
the proposed query refinement |