SearchView源码分析

首先我们来看看它的源码。

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

猜你喜欢

转载自blog.csdn.net/songzi1228/article/details/81383742