首先我们来看看它的源码。
private static final boolean DBG = false;
private static final String LOG_TAG = "SearchView";
/**
* Private constant for removing the microphone in the keyboard.
*/
private static final String IME_OPTION_NO_MICROPHONE = "nm";
private final SearchAutoComplete mSearchSrcTextView;
private final View mSearchEditFrame;
private final View mSearchPlate;
private final View mSubmitArea;
private final ImageView mSearchButton;
private final ImageView mGoButton;
private final ImageView mCloseButton;
private final ImageView mVoiceButton;
private final View mDropDownAnchor;
我们发现SearchView实际上是一个View的集合,有4个View、ImageView,还有一为SearchAutoComplete。我们重点关注的就是这个叫SearchAutoComplete的控件。后面大多数的功能都是围绕这个控件展开的。
SearchAutoComplete控件是什么?
我们对SearchAutoComplete的源码进行查看,简单分析它的功能。
public static class SearchAutoComplete extends AppCompatAutoCompleteTextView
通过查看源码我们可以知道SearchAutoComplete实际上就是一个AutoCompleteTextView,而AutoCompleteTextView。所以SearchAutoComplete实际上是对AutoCompleteTextView的一个拓展。而我们知道SearchView是有一个输入框和多个按钮的。所以我判断,这个SearchAutoComplete实际上就是SearchView上的输入框,那么我们可以根据这个特点,完成一些AutoCompleteTextView类似的功能。
SearchAutoComplete控件能做什么?
SearchAutoComplete的特点就是有自动补全的功能。那么我们可以通过这个功能做一个类似自动补全的功能,实际上很多Android中的自动补全功能都是通过AutoCompleteTextView来实现的。所以我们可以通过SearchAutoComplete的这个特性来实现搜索提示或者历史记录功能都可以。
SearchView搜索提示(历史记录)的实现
参考文章:
http://www.apkbus.com/forum.php?mod=viewthread&tid=312394