SearchView的简单使用和模拟搜索

android SearchView其实就是EditView添加了一些方法,可以达到搜索的功能,首先先看它的布局文件,这是v7包下的SearchView

<android.support.v7.widget.SearchView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/find_serach"
    app:queryHint="请输入搜索的文字"

    >android.support.v7.widget.SearchView>
其中queryHint就是默认文字,这里还可以设置自定义的文字颜色和背景,剩下主要是代码部分,我先为大家介绍几个方法,我亲自测试过的:
1.
setIconifiedByDefault()是设置搜索框是否默认展开;
2.
setSubmitButtonEnabled()是否设置一个提交按钮;
其他功能看下表:

SearchView属性

属性名称 相关方法 描述
android:iconifiedByDefault setIconifiedByDefault(boolean) 设置搜索图标是否显示在搜索框内
     
android:imeOptions setImeOptions(int) 设置输入法搜索选项字段,默认是搜索,可以是:下一页、发送、完成等
     
android:inputType setInputType(int) 设置输入类型
     
android:maxWidth setMaxWidth(int) 设置最大宽度
     
android:queryHint setQueryHint(CharSequence) 设置查询提示字符串

监听方法:
setOnQueryTextListener();
这是监听我们搜索时,和搜索后的方法,它内含两个方法
onQueryTextSubmit(String query)这是提交时的方法,可以根据你提交的内容进行相应的搜索操作,
onQueryTextChange(String newText)这是在搜索框内输入内容时,可以像百度,淘宝,搜索时模糊推荐选项,供你选择;
其他也没什么了,接下来看完整代码:

public class FindActivity extends AppCompatActivity implements SearchView.OnQueryTextListener {

    private SearchView searchView;
    private List data=new ArrayList<>();

    private ListView lv;
    private List arr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getSupportActionBar().hide();
        super.onCreate(savedInstanceState);

        arr = new ArrayList<>();


        searchView = (SearchView) findViewById(R.id.find_serach);
        searchView.setIconifiedByDefault(false);
        searchView.setSubmitButtonEnabled(true);
        searchView.setOnQueryTextListener(this);
        lv = (ListView) findViewById(R.id.lv_query_name);

        for (int i = 0; i < 10; i++) {
            arr.add("data"+i);

        }
        lv.setAdapter(new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, arr));
//给listVIew设置可过滤的操作
        lv.setTextFilterEnabled(true);
    }

    @Override
    public boolean onQueryTextSubmit(String query) {
//跳转到手机自带的浏览器百度或者谷歌
        Intent intent = new Intent();

        intent.setAction(Intent.ACTION_WEB_SEARCH);

        intent.putExtra(SearchManager.QUERY, query);

        startActivity(intent);
        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
//判断是否输入内容,并进入过滤操作
        if(!TextUtils.isEmpty(newText))
        {
            lv.setFilterText(newText);
        }
        else
        {
            lv.clearTextFilter();
        }
        return false;
    }
}



分享到此结束,请多多指教,希望对你们有些帮助。
















你可能感兴趣的:(SearchView的简单使用和模拟搜索)